diff options
author | 2019-12-30 02:10:02 +0000 | |
---|---|---|
committer | 2019-12-30 02:10:02 +0000 | |
commit | f3efcd0145415b7d44d9da97e0ad5c21b186ac61 (patch) | |
tree | d6abf0994f508740c446dec46e925b7dc7572459 | |
parent | Populate logical disk port WWNs with their RAID volume's WWID (diff) | |
download | wireguard-openbsd-f3efcd0145415b7d44d9da97e0ad5c21b186ac61.tar.xz wireguard-openbsd-f3efcd0145415b7d44d9da97e0ad5c21b186ac61.zip |
Import perl-5.30.1
Timing is good deraadt@, OK sthen@
381 files changed, 29251 insertions, 10271 deletions
diff --git a/gnu/usr.bin/perl/.lgtm.yml b/gnu/usr.bin/perl/.lgtm.yml new file mode 100644 index 00000000000..fe68cf79b8c --- /dev/null +++ b/gnu/usr.bin/perl/.lgtm.yml @@ -0,0 +1,15 @@ +extraction: + cpp: + configure: + command: + - "./Configure -des -Dusedevel" + index: + build_command: + - "make" +path_classifiers: + generated: + - charclass_invlists.h + # These files are incorrectly classified as generated. Work around + # this pending a fix on LGTM.com. + - exclude: perl.c + - exclude: op.c diff --git a/gnu/usr.bin/perl/.metaconf-exclusions.txt b/gnu/usr.bin/perl/.metaconf-exclusions.txt index ce9e3d56586..e8138ea8cfd 100644 --- a/gnu/usr.bin/perl/.metaconf-exclusions.txt +++ b/gnu/usr.bin/perl/.metaconf-exclusions.txt @@ -24,3 +24,4 @@ I_LIMITS I_STDARG index rindex +const diff --git a/gnu/usr.bin/perl/.travis.yml b/gnu/usr.bin/perl/.travis.yml index cd235e74daa..8aebd2ba454 100644 --- a/gnu/usr.bin/perl/.travis.yml +++ b/gnu/usr.bin/perl/.travis.yml @@ -21,6 +21,10 @@ env: matrix: - CONFIGURE_ARGS='-Uusethreads' - CONFIGURE_ARGS='-Dusethreads' + - CONFIGURE_ARGS='-DPERL_GLOBAL_STRUCT' + - CONFIGURE_ARGS='-DPERL_GLOBAL_STRUCT_PRIVATE' + - CONFIGURE_ARGS='-Duseshrplib -Dusesitecustomize' + - CONFIGURE_ARGS='-Duserelocatableinc' # only use gcc on linux, and only use clang on osx for now matrix: @@ -67,4 +71,4 @@ notifications: - "GitHub URL: https://github.com/p5h/perl5demo/commit/%{commit}" # adjust this url to use the production repo on_success: change # default: always on_failure: always # default: always -# use_notice: true
\ No newline at end of file +# use_notice: true diff --git a/gnu/usr.bin/perl/Porting/README.y2038 b/gnu/usr.bin/perl/Porting/README.y2038 index 41087d5215b..0e83775cf32 100644 --- a/gnu/usr.bin/perl/Porting/README.y2038 +++ b/gnu/usr.bin/perl/Porting/README.y2038 @@ -55,7 +55,7 @@ unix-like systems. For windows and VMS these values are hard-coded. You can use timecheck.c in the Porting directory to check those values yourself, using the same technique that is used in Configure based on bit-shifting: - $ cd perl/Porting + $ cd Porting $ cc -O -o timecheck timecheck.c $ ./timecheck ====================== diff --git a/gnu/usr.bin/perl/Porting/timecheck.c b/gnu/usr.bin/perl/Porting/timecheck.c index cf0303aaf49..87a252d631e 100644 --- a/gnu/usr.bin/perl/Porting/timecheck.c +++ b/gnu/usr.bin/perl/Porting/timecheck.c @@ -6,7 +6,7 @@ #include <stdio.h> #include <time.h> #include <errno.h> -#include <values.h> +#include <string.h> int opt_v = 0; int i; @@ -36,7 +36,7 @@ void gm_check (time_t t, int min_year, int max_year) if (opt_v) fprintf (stderr, "%3d:%s: %12ld-%02d-%02d %02d:%02d:%02d\n", i, hex (t), - tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, + (long)(tmp->tm_year) + 1900, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec); pt = t; } @@ -88,7 +88,7 @@ void lt_check (time_t t, int min_year, int max_year) if (opt_v) fprintf (stderr, "%3d:%s: %12ld-%02d-%02d %02d:%02d:%02d\n", i, hex (t), - tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, + (long)(tmp->tm_year) + 1900, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec); pt = t; } @@ -136,7 +136,7 @@ int main (int argc, char *argv[]) opt_v++; printf ("======================\n"); - printf ("Sizeof time_t = %ld\n", (i = sizeof (time_t))); + printf ("Sizeof time_t = %d\n", (i = sizeof (time_t))); printf ("gmtime () boundaries:\n"); gm_check (gm_max, 69, 0x7fffffff); gm_check (gm_min, -1900, 70); diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Plugin/Specfile.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Plugin/Specfile.pm index f63d322c74f..425c4bdb4ec 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Plugin/Specfile.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Plugin/Specfile.pm @@ -14,7 +14,12 @@ CPAN::Plugin::Specfile - Proof of concept implementation of a trivial CPAN::Plug test Acme::Meta # disable + # if it is the last in plugin_list: o conf plugin_list pop + # otherwise, determine the index to splice: + o conf plugin_list + # and then use splice, e.g. to splice position 3: + o conf plugin_list splice 3 1 =head1 DESCRIPTION @@ -48,7 +53,7 @@ Andreas Koenig <andk@cpan.org>, Branislav Zahradnik <barney@cpan.org> package CPAN::Plugin::Specfile; -our $VERSION = '0.01'; +our $VERSION = '0.02'; use File::Path; use File::Spec; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm index da238e15d27..c506632f90e 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm @@ -395,6 +395,17 @@ my %TOP = ( Raw => 0, }, + 'IO::Compress::Lzip' => { Inverse => 'IO::Uncompress::UnLzip', + Error => 'LzipError', + TopLevel => 'lzip', + Raw => 0, + }, + 'IO::Uncompress::UnLzip' => { Inverse => 'IO::Compress::Lzip', + Error => 'UnLzipError', + TopLevel => 'unlzip', + Raw => 0, + }, + 'IO::Compress::PPMd' => { Inverse => 'IO::Uncompress::UnPPMd', Error => 'PPMdError', TopLevel => 'ppmd', @@ -405,6 +416,16 @@ my %TOP = ( TopLevel => 'unppmd', Raw => 0, }, + 'IO::Compress::Zstd' => { Inverse => 'IO::Uncompress::UnZstd', + Error => 'ZstdError', + TopLevel => 'zstd', + Raw => 0, + }, + 'IO::Uncompress::UnZstd' => { Inverse => 'IO::Compress::Zstd', + Error => 'UnZstdError', + TopLevel => 'unzstd', + Raw => 0, + }, 'IO::Compress::DummyComp' => { Inverse => 'IO::Uncompress::DummyUnComp', Error => 'DummyCompError', @@ -494,7 +515,7 @@ sub compressBuffer our ($AnyUncompressError); BEGIN { - eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); '; + eval ' use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError); '; } sub anyUncompress @@ -555,7 +576,6 @@ sub anyUncompress if $o->error() ; return $out ; - } sub getHeaders @@ -718,7 +738,7 @@ sub getMultiValues { my $class = shift ; - return (0,0) if $class =~ /lzf|lzma/i; + return (0,0) if $class =~ /lzf|lzma|zstd/i; return (1,0); } diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm index da238e15d27..c506632f90e 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm @@ -395,6 +395,17 @@ my %TOP = ( Raw => 0, }, + 'IO::Compress::Lzip' => { Inverse => 'IO::Uncompress::UnLzip', + Error => 'LzipError', + TopLevel => 'lzip', + Raw => 0, + }, + 'IO::Uncompress::UnLzip' => { Inverse => 'IO::Compress::Lzip', + Error => 'UnLzipError', + TopLevel => 'unlzip', + Raw => 0, + }, + 'IO::Compress::PPMd' => { Inverse => 'IO::Uncompress::UnPPMd', Error => 'PPMdError', TopLevel => 'ppmd', @@ -405,6 +416,16 @@ my %TOP = ( TopLevel => 'unppmd', Raw => 0, }, + 'IO::Compress::Zstd' => { Inverse => 'IO::Uncompress::UnZstd', + Error => 'ZstdError', + TopLevel => 'zstd', + Raw => 0, + }, + 'IO::Uncompress::UnZstd' => { Inverse => 'IO::Compress::Zstd', + Error => 'UnZstdError', + TopLevel => 'unzstd', + Raw => 0, + }, 'IO::Compress::DummyComp' => { Inverse => 'IO::Uncompress::DummyUnComp', Error => 'DummyCompError', @@ -494,7 +515,7 @@ sub compressBuffer our ($AnyUncompressError); BEGIN { - eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); '; + eval ' use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError); '; } sub anyUncompress @@ -555,7 +576,6 @@ sub anyUncompress if $o->error() ; return $out ; - } sub getHeaders @@ -718,7 +738,7 @@ sub getMultiValues { my $class = shift ; - return (0,0) if $class =~ /lzf|lzma/i; + return (0,0) if $class =~ /lzf|lzma|zstd/i; return (1,0); } diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/29_plv5235w.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/29_plv5235w.t index 26d32819076..f69d5fa8f89 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/29_plv5235w.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/29_plv5235w.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 119; + my $tests = 120; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/30_plv5240.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/30_plv5240.t index 6b717d69e77..2d6c0fd1662 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/30_plv5240.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/30_plv5240.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 127; + my $tests = 128; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/31_plv52511.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/31_plv52511.t index 762a63d2e87..a5b39ca27bf 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/31_plv52511.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/31_plv52511.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 127; + my $tests = 128; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/32_plv5261rc1.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/32_plv5261rc1.t index 9250016b7af..9db16b2ffd6 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/32_plv5261rc1.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/32_plv5261rc1.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 127; + my $tests = 128; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/33_plv52711r.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/33_plv52711r.t index 851c224bde4..c6940d201a9 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/33_plv52711r.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/33_plv52711r.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 127; + my $tests = 128; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/34_plv5280.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/34_plv5280.t new file mode 100644 index 00000000000..f6c38df27c0 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/34_plv5280.t @@ -0,0 +1,178 @@ +#!/pro/bin/perl + +use strict; +use warnings; + +BEGIN { + use Test::More; + my $tests = 128; + unless ($ENV{PERL_CORE}) { + require Test::NoWarnings; + Test::NoWarnings->import (); + $tests++; + } + + plan tests => $tests; + } + +use Config::Perl::V qw( summary ); + +ok (my $conf = Config::Perl::V::plv2hash (<DATA>), "Read perl -v block"); +ok (exists $conf->{$_}, "Has $_ entry") for qw( build environment config inc ); + +is ($conf->{build}{osname}, $conf->{config}{osname}, "osname"); +is ($conf->{build}{stamp}, "Jun 26 2018 12:17:32", "Build time"); +is ($conf->{config}{version}, "5.28.0", "reconstructed \$Config{version}"); + +my $opt = Config::Perl::V::plv2hash ("")->{build}{options}; +foreach my $o (sort qw( + HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP + PERL_OP_PARENT PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT + USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE + USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME + USE_LONG_DOUBLE USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API + )) { + is ($conf->{build}{options}{$o}, 1, "Runtime option $o set"); + delete $opt->{$o}; + } +foreach my $o (sort keys %$opt) { + is ($conf->{build}{options}{$o}, 0, "Runtime option $o unset"); + } + +eval { require Digest::MD5; }; +my $md5 = $@ ? "0" x 32 : "4add7fd04b60c2048a46ff47087e6952"; +ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); +is ($sig, $md5, "MD5"); + +is_deeply ($conf->{build}{patches}, [], "No local patches"); + +my %check = ( + alignbytes => 16, + api_version => 28, + bincompat5005 => "undef", + byteorder => 12345678, + cc => "cc", + cccdlflags => "-fPIC", + ccdlflags => "-Wl,-E", + config_args => "-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -des", + gccversion => "8.1.1 20180523 [gcc-8-branch revision 260570]", + gnulibc_version => "2.27", + ivsize => 8, + ivtype => "long", + ld => "cc", + lddlflags => "-shared -O2 -L/pro/local/lib -fstack-protector-strong", + ldflags => "-L/pro/local/lib -fstack-protector-strong", + libc => "libc-2.27.so", + lseektype => "off_t", + osvers => "4.17.2-1-default", + use64bitall => "define", + use64bitint => "define", + usemymalloc => "n", + default_inc_excludes_dot + => "define", + ); +is ($conf->{config}{$_}, $check{$_}, "reconstructed \$Config{$_}") for sort keys %check; + +ok (my $info = summary ($conf), "A summary"); +ok (exists $info->{$_}, "Summary has $_") for qw( cc config_args usemymalloc default_inc_excludes_dot ); +is ($info->{default_inc_excludes_dot}, "define", "This build has . NOT in INC"); + +__END__ +Summary of my perl5 (revision 5 version 28 subversion 0) configuration: + + Platform: + osname=linux + osvers=4.17.2-1-default + archname=x86_64-linux-thread-multi-ld + uname='linux lx09 4.17.2-1-default #1 smp preempt sat jun 16 10:58:03 utc 2018 (ddde22d) x86_64 x86_64 x86_64 gnulinux ' + config_args='-Dusethreads -Duseithreads -Duse64bitall -Duselongdouble -des' + hint=recommended + useposix=true + d_sigaction=define + useithreads=define + usemultiplicity=define + use64bitint=define + use64bitall=define + uselongdouble=define + usemymalloc=n + default_inc_excludes_dot=define + bincompat5005=undef + Compiler: + cc='cc' + ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' + optimize='-O2' + cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' + ccversion='' + gccversion='8.1.1 20180523 [gcc-8-branch revision 260570]' + gccosandvers='' + intsize=4 + longsize=8 + ptrsize=8 + doublesize=8 + byteorder=12345678 + doublekind=3 + d_longlong=define + longlongsize=8 + d_longdbl=define + longdblsize=16 + longdblkind=3 + ivtype='long' + ivsize=8 + nvtype='long double' + nvsize=16 + Off_t='off_t' + lseeksize=8 + alignbytes=16 + prototype=define + Linker and Libraries: + ld='cc' + ldflags ='-L/pro/local/lib -fstack-protector-strong' + libpth=/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/lib /usr/lib /pro/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64 + libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat + perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc + libc=libc-2.27.so + so=so + useshrplib=false + libperl=libperl.a + gnulibc_version='2.27' + Dynamic Linking: + dlsrc=dl_dlopen.xs + dlext=so + d_dlsymun=undef + ccdlflags='-Wl,-E' + cccdlflags='-fPIC' + lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' + + +Characteristics of this binary (from libperl): + Compile-time options: + HAS_TIMES + MULTIPLICITY + PERLIO_LAYERS + PERL_COPY_ON_WRITE + PERL_DONT_CREATE_GVSV + PERL_IMPLICIT_CONTEXT + PERL_MALLOC_WRAP + PERL_OP_PARENT + PERL_PRESERVE_IVUV + USE_64_BIT_ALL + USE_64_BIT_INT + USE_ITHREADS + USE_LARGE_FILES + USE_LOCALE + USE_LOCALE_COLLATE + USE_LOCALE_CTYPE + USE_LOCALE_NUMERIC + USE_LOCALE_TIME + USE_LONG_DOUBLE + USE_PERLIO + USE_PERL_ATOF + USE_REENTRANT_API + Built under linux + Compiled at Jun 26 2018 12:17:32 + @INC: + /pro/lib/perl5/site_perl/5.28.0/x86_64-linux-thread-multi-ld + /pro/lib/perl5/site_perl/5.28.0 + /pro/lib/perl5/5.28.0/x86_64-linux-thread-multi-ld + /pro/lib/perl5/5.28.0 diff --git a/gnu/usr.bin/perl/cpan/DB_File/hints/bitrig.pl b/gnu/usr.bin/perl/cpan/DB_File/hints/bitrig.pl new file mode 100644 index 00000000000..53703a0cb6b --- /dev/null +++ b/gnu/usr.bin/perl/cpan/DB_File/hints/bitrig.pl @@ -0,0 +1 @@ +$self->{LIBS} = ['']; diff --git a/gnu/usr.bin/perl/cpan/DB_File/hints/minix.pl b/gnu/usr.bin/perl/cpan/DB_File/hints/minix.pl new file mode 100644 index 00000000000..53703a0cb6b --- /dev/null +++ b/gnu/usr.bin/perl/cpan/DB_File/hints/minix.pl @@ -0,0 +1 @@ +$self->{LIBS} = ['']; diff --git a/gnu/usr.bin/perl/cpan/DB_File/hints/netbsd.pl b/gnu/usr.bin/perl/cpan/DB_File/hints/netbsd.pl new file mode 100644 index 00000000000..53703a0cb6b --- /dev/null +++ b/gnu/usr.bin/perl/cpan/DB_File/hints/netbsd.pl @@ -0,0 +1 @@ +$self->{LIBS} = ['']; diff --git a/gnu/usr.bin/perl/cpan/DB_File/hints/openbsd.pl b/gnu/usr.bin/perl/cpan/DB_File/hints/openbsd.pl new file mode 100644 index 00000000000..53703a0cb6b --- /dev/null +++ b/gnu/usr.bin/perl/cpan/DB_File/hints/openbsd.pl @@ -0,0 +1 @@ +$self->{LIBS} = ['']; diff --git a/gnu/usr.bin/perl/cpan/DB_File/t/db-btree.t b/gnu/usr.bin/perl/cpan/DB_File/t/db-btree.t index 4e2968eeb53..4ff405e51d0 100755 --- a/gnu/usr.bin/perl/cpan/DB_File/t/db-btree.t +++ b/gnu/usr.bin/perl/cpan/DB_File/t/db-btree.t @@ -31,6 +31,7 @@ EOM use DB_File; use Fcntl; +use File::Temp qw(tempdir) ; print "1..197\n"; @@ -125,6 +126,9 @@ my $db185mode = ($DB_File::db_version == 1 && ! $DB_File::db_185_compat) ; my $null_keys_allowed = ($DB_File::db_ver < 2.004010 || $DB_File::db_ver >= 3.1 ); +my $TEMPDIR = tempdir( CLEANUP => 1 ); +chdir $TEMPDIR; + my $Dfile = "dbbtree.tmp"; unlink $Dfile; diff --git a/gnu/usr.bin/perl/cpan/DB_File/t/db-hash.t b/gnu/usr.bin/perl/cpan/DB_File/t/db-hash.t index f4c8f957b02..97b77fcfd7d 100755 --- a/gnu/usr.bin/perl/cpan/DB_File/t/db-hash.t +++ b/gnu/usr.bin/perl/cpan/DB_File/t/db-hash.t @@ -3,6 +3,7 @@ use warnings; use strict; use Config; +use File::Temp qw(tempdir) ; BEGIN { if(-d "lib" && -f "TEST") { @@ -82,6 +83,8 @@ sub safeUntie return $no_inner; } +my $TEMPDIR = tempdir( CLEANUP => 1 ); +chdir $TEMPDIR; my $Dfile = "dbhash.tmp"; my $Dfile2 = "dbhash2.tmp"; @@ -132,7 +135,7 @@ ok(14, $@ =~ /^DB_File::HASHINFO::FETCH - Unknown element 'fred' at/ ); # Now check the interface to HASH my ($X, %h); ok(15, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); -die "Could not tie: $!" unless $X; +die "Could not tie: $!" unless defined $X; my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); diff --git a/gnu/usr.bin/perl/cpan/DB_File/t/db-recno.t b/gnu/usr.bin/perl/cpan/DB_File/t/db-recno.t index bd198dcf2ff..18b7e9e287d 100755 --- a/gnu/usr.bin/perl/cpan/DB_File/t/db-recno.t +++ b/gnu/usr.bin/perl/cpan/DB_File/t/db-recno.t @@ -14,6 +14,8 @@ BEGIN { use DB_File; use Fcntl; +use File::Temp qw(tempdir) ; + our ($dbh, $Dfile, $bad_ones, $FA); # full tied array support started in Perl 5.004_57 @@ -147,6 +149,9 @@ my $total_tests = 181 ; $total_tests += $splice_tests if $FA ; print "1..$total_tests\n"; +my $TEMPDIR = tempdir( CLEANUP => 1 ); +chdir $TEMPDIR; + $Dfile = "recno.tmp"; unlink $Dfile ; diff --git a/gnu/usr.bin/perl/cpan/DB_File/t/db-threads.t b/gnu/usr.bin/perl/cpan/DB_File/t/db-threads.t new file mode 100644 index 00000000000..f9bce95356a --- /dev/null +++ b/gnu/usr.bin/perl/cpan/DB_File/t/db-threads.t @@ -0,0 +1,53 @@ +#!./perl + +use warnings; +use strict; +use Config; +use Fcntl; +use Test::More; +use DB_File; +use File::Temp qw(tempdir) ; + +if (-d "lib" && -f "TEST") { + if ($Config{'extensions'} !~ /\bDB_File\b/ ) { + plan skip_all => 'DB_File was not built'; + } +} +plan skip_all => 'Threads are disabled' + unless $Config{usethreads}; + +plan skip_all => 'Thread test needs Perl 5.8.7 or greater' + unless $] >= 5.008007; + +plan tests => 7; + +# Check DBM back-ends do not destroy objects from then-spawned threads. +# RT#61912. +use_ok('threads'); + +my $TEMPDIR = tempdir( CLEANUP => 1 ); +chdir $TEMPDIR; + +my %h; +unlink <threads*>; + +my $db = tie %h, 'DB_File', 'threads', O_RDWR|O_CREAT, 0640; +isa_ok($db, 'DB_File'); + +for (1 .. 2) { + ok(threads->create( + sub { + $SIG{'__WARN__'} = sub { fail(shift) }; # debugging perl panics + # report it by spurious TAP line + 1; + }), "Thread $_ created"); +} +for (threads->list) { + is($_->join, 1, "A thread exited successfully"); +} + +pass("Tied object survived exiting threads"); + +undef $db; +untie %h; +unlink <threads*>; diff --git a/gnu/usr.bin/perl/cpan/Encode/Encode/encode.h b/gnu/usr.bin/perl/cpan/Encode/Encode/encode.h index df5554f1cb8..5d7663d5b55 100644 --- a/gnu/usr.bin/perl/cpan/Encode/Encode/encode.h +++ b/gnu/usr.bin/perl/cpan/Encode/Encode/encode.h @@ -99,6 +99,7 @@ extern void Encode_DefineEncoding(encode_t *enc); #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_ONLY_PRAGMA_WARNINGS 0x0010 /* when enabled report only warnings configured by pragma warnings, otherwise report all warnings; no effect without ENCODE_WARN_ON_ERR */ #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 */ @@ -112,4 +113,1238 @@ extern void Encode_DefineEncoding(encode_t *enc); #define ENCODE_FB_HTMLCREF (ENCODE_HTMLCREF|ENCODE_LEAVE_SRC) #define ENCODE_FB_XMLCREF (ENCODE_XMLCREF|ENCODE_LEAVE_SRC) +#define encode_ckWARN(c, w) ((c & ENCODE_WARN_ON_ERR) \ + && (!(c & ENCODE_ONLY_PRAGMA_WARNINGS) || ckWARN(w))) + +#ifdef UTF8SKIP +# ifdef EBCDIC /* The value on early perls is wrong */ +# undef UTF8_MAXBYTES +# define UTF8_MAXBYTES 14 +# endif +# ifndef UNLIKELY +# define UNLIKELY(x) (x) +# endif +# ifndef LIKELY +# define LIKELY(x) (x) +# endif + +/* EBCDIC requires a later perl to work, so the next two definitions are for + * ASCII machines only */ +# ifndef NATIVE_UTF8_TO_I8 +# define NATIVE_UTF8_TO_I8(x) (x) +# endif +# ifndef I8_TO_NATIVE_UTF8 +# define I8_TO_NATIVE_UTF8(x) (x) +# endif +# ifndef OFFUNISKIP +# define OFFUNISKIP(x) UNISKIP(x) +# endif +# ifndef uvoffuni_to_utf8_flags +# define uvoffuni_to_utf8_flags(a,b,c) uvuni_to_utf8_flags(a,b,c) +# endif +# ifndef WARN_SURROGATE /* Use the overarching category if these + subcategories are missing */ +# define WARN_SURROGATE WARN_UTF8 +# define WARN_NONCHAR WARN_UTF8 +# define WARN_NON_UNICODE WARN_UTF8 + /* If there's only one possible category, then packing is a no-op */ +# define encode_ckWARN_packed(c, w) encode_ckWARN(c, w) +# else +# define encode_ckWARN_packed(c, w) \ + ((c & ENCODE_WARN_ON_ERR) \ + && (!(c & ENCODE_ONLY_PRAGMA_WARNINGS) || Perl_ckwarn(aTHX_ w))) +# endif + +/* All these formats take a single UV code point argument */ +static const char surrogate_cp_format[] = "UTF-16 surrogate U+%04" UVXf; +static const char nonchar_cp_format[] = "Unicode non-character U+%04" UVXf + " is not recommended for open interchange"; +static const char super_cp_format[] = "Code point 0x%" UVXf " is not Unicode," + " may not be portable"; + +/* If the perl doesn't have the 5.28 functions, this file includes + * stripped-down versions of them but containing enough functionality to be + * suitable for Encode's needs. Many of the comments have been removed. But + * you can inspect the 5.28 source if you get stuck. + * + * These could be put in Devel::PPPort, but Encode is likely the only user */ + +#if (defined(IN_ENCODE_XS) || defined(IN_UNICODE_XS)) \ + && (! defined(utf8n_to_uvchr_msgs) && ! defined(uvchr_to_utf8_flags_msgs)) + +# ifndef hv_stores +# define hv_stores(hv, key, val) hv_store((hv), ("" key ""), (sizeof(key)-1), (val), 0) +# endif + +static HV * +S_new_msg_hv(const char * const message, /* The message text */ + U32 categories) /* Packed warning categories */ +{ + /* Creates, populates, and returns an HV* that describes an error message + * for the translators between UTF8 and code point */ + + dTHX; + SV* msg_sv = newSVpv(message, 0); + SV* category_sv = newSVuv(categories); + + HV* msg_hv = newHV(); + + (void) hv_stores(msg_hv, "text", msg_sv); + (void) hv_stores(msg_hv, "warn_categories", category_sv); + + return msg_hv; +} + +#endif + +#if ! defined(utf8n_to_uvchr_msgs) \ + && (defined(IN_ENCODE_XS) || defined(IN_UNICODE_XS)) + +# undef utf8n_to_uvchr /* Don't use an earlier version: use the version + defined in this file */ +# define utf8n_to_uvchr(a,b,c,d) utf8n_to_uvchr_msgs(a, b, c, d, 0, NULL) + +# undef UTF8_IS_START /* Early perls wrongly accepted C0 and C1 */ +# define UTF8_IS_START(c) (((U8)(c)) >= 0xc2) +# ifndef isUTF8_POSSIBLY_PROBLEMATIC +# ifdef EBCDIC +# define isUTF8_POSSIBLY_PROBLEMATIC(c) ((U8) c > ' ') +# else +# define isUTF8_POSSIBLY_PROBLEMATIC(c) ((U8) c >= 0xED) +# endif +# endif +# ifndef UTF8_ALLOW_OVERFLOW +# define UTF8_ALLOW_OVERFLOW (1U<<31) /* Choose highest bit to avoid + potential conflicts */ +# define UTF8_GOT_OVERFLOW UTF8_ALLOW_OVERFLOW +# endif +# undef UTF8_ALLOW_ANY /* Early perl definitions don't work properly with + the code in this file */ +# define UTF8_ALLOW_ANY ( UTF8_ALLOW_CONTINUATION \ + |UTF8_ALLOW_NON_CONTINUATION \ + |UTF8_ALLOW_SHORT \ + |UTF8_ALLOW_LONG \ + |UTF8_ALLOW_OVERFLOW) + +/* The meanings of these were complemented at some point, but the functions + * bundled in this file use the complemented meanings */ +# ifndef UTF8_DISALLOW_SURROGATE +# define UTF8_DISALLOW_SURROGATE UTF8_ALLOW_SURROGATE +# define UTF8_DISALLOW_NONCHAR UTF8_ALLOW_FFFF +# define UTF8_DISALLOW_SUPER UTF8_ALLOW_FE_FF + + /* In the stripped-down implementation in this file, disallowing is not + * independent of warning */ +# define UTF8_WARN_SURROGATE UTF8_DISALLOW_SURROGATE +# define UTF8_WARN_NONCHAR UTF8_DISALLOW_NONCHAR +# define UTF8_WARN_SUPER UTF8_DISALLOW_SUPER +# endif +# ifndef UTF8_DISALLOW_ILLEGAL_INTERCHANGE +# define UTF8_DISALLOW_ILLEGAL_INTERCHANGE \ + (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_SURROGATE|UTF8_DISALLOW_NONCHAR) +# endif +# ifndef UTF8_WARN_ILLEGAL_INTERCHANGE +# define UTF8_WARN_ILLEGAL_INTERCHANGE \ + (UTF8_WARN_SUPER|UTF8_WARN_SURROGATE|UTF8_WARN_NONCHAR) +# endif +# ifndef FIRST_START_BYTE_THAT_IS_DEFINITELY_SUPER +# ifdef EBCDIC /* On EBCDIC, these are actually I8 bytes */ +# define FIRST_START_BYTE_THAT_IS_DEFINITELY_SUPER 0xFA +# define IS_UTF8_2_BYTE_SUPER(s0, s1) ((s0) == 0xF9 && (s1) >= 0xA2) + +# define IS_UTF8_2_BYTE_SURROGATE(s0, s1) ((s0) == 0xF1 \ + && ((s1) & 0xFE ) == 0xB6) +# else +# define FIRST_START_BYTE_THAT_IS_DEFINITELY_SUPER 0xF5 +# define IS_UTF8_2_BYTE_SUPER(s0, s1) ((s0) == 0xF4 && (s1) >= 0x90) +# define IS_UTF8_2_BYTE_SURROGATE(s0, s1) ((s0) == 0xED && (s1) >= 0xA0) +# endif +# ifndef HIGHEST_REPRESENTABLE_UTF8 +# if defined(UV_IS_QUAD) /* These assume IV_MAX is 2**63-1 */ +# ifdef EBCDIC /* Actually is I8 */ +# define HIGHEST_REPRESENTABLE_UTF8 \ + "\xFF\xA7\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF" +# else +# define HIGHEST_REPRESENTABLE_UTF8 \ + "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF" +# endif +# endif +# endif +# endif + +# ifndef Newx +# define Newx(v,n,t) New(0,v,n,t) +# endif + +# ifndef PERL_UNUSED_ARG +# define PERL_UNUSED_ARG(x) ((void)x) +# endif + +static const char malformed_text[] = "Malformed UTF-8 character"; + +static char * +_byte_dump_string(const U8 * const start, const STRLEN len) +{ + /* Returns a mortalized C string that is a displayable copy of the 'len' */ + + const STRLEN output_len = 4 * len + 1; /* 4 bytes per each input, plus a + trailing NUL */ + const U8 * s = start; + const U8 * const e = start + len; + char * output; + char * d; + dTHX; + + Newx(output, output_len, char); + SAVEFREEPV(output); + + d = output; + for (s = start; s < e; s++) { + const unsigned high_nibble = (*s & 0xF0) >> 4; + const unsigned low_nibble = (*s & 0x0F); + + *d++ = '\\'; + *d++ = 'x'; + + if (high_nibble < 10) { + *d++ = high_nibble + '0'; + } + else { + *d++ = high_nibble - 10 + 'a'; + } + + if (low_nibble < 10) { + *d++ = low_nibble + '0'; + } + else { + *d++ = low_nibble - 10 + 'a'; + } + } + + *d = '\0'; + return output; +} + +static char * +S_unexpected_non_continuation_text(const U8 * const s, + + /* Max number of bytes to print */ + STRLEN print_len, + + /* Which one is the non-continuation */ + const STRLEN non_cont_byte_pos, + + /* How many bytes should there be? */ + const STRLEN expect_len) +{ + /* Return the malformation warning text for an unexpected continuation + * byte. */ + + dTHX; + const char * const where = (non_cont_byte_pos == 1) + ? "immediately" + : Perl_form(aTHX_ "%d bytes", + (int) non_cont_byte_pos); + const U8 * x = s + non_cont_byte_pos; + const U8 * e = s + print_len; + + /* We don't need to pass this parameter, but since it has already been + * calculated, it's likely faster to pass it; verify under DEBUGGING */ + assert(expect_len == UTF8SKIP(s)); + + /* As a defensive coding measure, don't output anything past a NUL. Such + * bytes shouldn't be in the middle of a malformation, and could mark the + * end of the allocated string, and what comes after is undefined */ + for (; x < e; x++) { + if (*x == '\0') { + x++; /* Output this particular NUL */ + break; + } + } + + return Perl_form(aTHX_ "%s: %s (unexpected non-continuation byte 0x%02x," + " %s after start byte 0x%02x; need %d bytes, got %d)", + malformed_text, + _byte_dump_string(s, x - s), + *(s + non_cont_byte_pos), + where, + *s, + (int) expect_len, + (int) non_cont_byte_pos); +} + +static int +S_is_utf8_overlong_given_start_byte_ok(const U8 * const s, const STRLEN len); + +static int +S_does_utf8_overflow(const U8 * const s, + const U8 * e, + const bool consider_overlongs) +{ + /* Returns an int indicating whether or not the UTF-8 sequence from 's' to + * 'e' - 1 would overflow an IV on this platform. */ + +# if ! defined(UV_IS_QUAD) + + const STRLEN len = e - s; + int is_overlong; + + assert(s <= e && s + UTF8SKIP(s) >= e); + assert(! UTF8_IS_INVARIANT(*s) && e > s); + +# ifdef EBCDIC + + PERL_UNUSED_ARG(consider_overlongs); + + if (*s != 0xFE) { + return 0; + } + + if (len == 1) { + return -1; + } + +# else + + if (LIKELY(*s < 0xFE)) { + return 0; + } + + if (! consider_overlongs) { + return 1; + } + + if (len == 1) { + return -1; + } + + is_overlong = S_is_utf8_overlong_given_start_byte_ok(s, len); + + if (is_overlong == 0) { + return 1; + } + + if (is_overlong < 0) { + return -1; + } + + if (*s == 0xFE) { + return 0; + } + +# endif + + /* Here, ASCII and EBCDIC rejoin: + * On ASCII: We have an overlong sequence starting with FF + * On EBCDIC: We have a sequence starting with FE. */ + + { /* For C89, use a block so the declaration can be close to its use */ + +# ifdef EBCDIC + const U8 conts_for_highest_30_bit[] = "\x41\x41\x41\x41\x41\x41\x42"; +# else + const U8 conts_for_highest_30_bit[] = "\x80\x80\x80\x80\x80\x80\x81"; +# endif + const STRLEN conts_len = sizeof(conts_for_highest_30_bit) - 1; + const STRLEN cmp_len = MIN(conts_len, len - 1); + + if (cmp_len >= conts_len || memNE(s + 1, + conts_for_highest_30_bit, + cmp_len)) + { + return memGT(s + 1, conts_for_highest_30_bit, cmp_len); + } + + return -1; + } + +# else /* Below is 64-bit word */ + + PERL_UNUSED_ARG(consider_overlongs); + + { + const STRLEN len = e - s; + const U8 *x; + const U8 * y = (const U8 *) HIGHEST_REPRESENTABLE_UTF8; + + for (x = s; x < e; x++, y++) { + + if (UNLIKELY(NATIVE_UTF8_TO_I8(*x) == *y)) { + continue; + } + return NATIVE_UTF8_TO_I8(*x) > *y; + } + + if (len < sizeof(HIGHEST_REPRESENTABLE_UTF8) - 1) { + return -1; + } + + return 0; + } + +# endif + +} + +static int +S_isFF_OVERLONG(const U8 * const s, const STRLEN len); + +static int +S_is_utf8_overlong_given_start_byte_ok(const U8 * const s, const STRLEN len) +{ + const U8 s0 = NATIVE_UTF8_TO_I8(s[0]); + const U8 s1 = NATIVE_UTF8_TO_I8(s[1]); + + assert(len > 1 && UTF8_IS_START(*s)); + +# ifdef EBCDIC +# define F0_ABOVE_OVERLONG 0xB0 +# define F8_ABOVE_OVERLONG 0xA8 +# define FC_ABOVE_OVERLONG 0xA4 +# define FE_ABOVE_OVERLONG 0xA2 +# define FF_OVERLONG_PREFIX "\xfe\x41\x41\x41\x41\x41\x41\x41" +# else + + if (s0 == 0xE0 && UNLIKELY(s1 < 0xA0)) { + return 1; + } + +# define F0_ABOVE_OVERLONG 0x90 +# define F8_ABOVE_OVERLONG 0x88 +# define FC_ABOVE_OVERLONG 0x84 +# define FE_ABOVE_OVERLONG 0x82 +# define FF_OVERLONG_PREFIX "\xff\x80\x80\x80\x80\x80\x80" +# endif + + if ( (s0 == 0xF0 && UNLIKELY(s1 < F0_ABOVE_OVERLONG)) + || (s0 == 0xF8 && UNLIKELY(s1 < F8_ABOVE_OVERLONG)) + || (s0 == 0xFC && UNLIKELY(s1 < FC_ABOVE_OVERLONG)) + || (s0 == 0xFE && UNLIKELY(s1 < FE_ABOVE_OVERLONG))) + { + return 1; + } + + /* Check for the FF overlong */ + return S_isFF_OVERLONG(s, len); +} + +int +S_isFF_OVERLONG(const U8 * const s, const STRLEN len) +{ + if (LIKELY(memNE(s, FF_OVERLONG_PREFIX, + MIN(len, sizeof(FF_OVERLONG_PREFIX) - 1)))) + { + return 0; + } + + if (len >= sizeof(FF_OVERLONG_PREFIX) - 1) { + return 1; + } + + return -1; +} + +# ifndef UTF8_GOT_CONTINUATION +# define UTF8_GOT_CONTINUATION UTF8_ALLOW_CONTINUATION +# define UTF8_GOT_EMPTY UTF8_ALLOW_EMPTY +# define UTF8_GOT_LONG UTF8_ALLOW_LONG +# define UTF8_GOT_NON_CONTINUATION UTF8_ALLOW_NON_CONTINUATION +# define UTF8_GOT_SHORT UTF8_ALLOW_SHORT +# define UTF8_GOT_SURROGATE UTF8_DISALLOW_SURROGATE +# define UTF8_GOT_NONCHAR UTF8_DISALLOW_NONCHAR +# define UTF8_GOT_SUPER UTF8_DISALLOW_SUPER +# endif + +# ifndef UNICODE_IS_SUPER +# define UNICODE_IS_SUPER(uv) ((UV) (uv) > PERL_UNICODE_MAX) +# endif +# ifndef UNICODE_IS_32_CONTIGUOUS_NONCHARS +# define UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) ((UV) (uv) >= 0xFDD0 \ + && (UV) (uv) <= 0xFDEF) +# endif +# ifndef UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER +# define UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv) \ + (((UV) (uv) & 0xFFFE) == 0xFFFE) +# endif +# ifndef is_NONCHAR_utf8_safe +# define is_NONCHAR_utf8_safe(s,e) /*** GENERATED CODE ***/ \ +( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\ + ( ( 0xB7 == ((const U8*)s)[1] ) ? \ + ( ( 0x90 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xAF ) ? 3 : 0 )\ + : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xBE ) ) ? 3 : 0 )\ + : ( 0xF0 == ((const U8*)s)[0] ) ? \ + ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 )\ + : ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ? \ + ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 )\ + : ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 ) : 0 ) +# endif + +# ifndef UTF8_IS_NONCHAR +# define UTF8_IS_NONCHAR(s, e) (is_NONCHAR_utf8_safe(s,e) > 0) +# endif +# ifndef UNICODE_IS_NONCHAR +# define UNICODE_IS_NONCHAR(uv) \ + ( UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) \ + || ( LIKELY( ! UNICODE_IS_SUPER(uv)) \ + && UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv))) +# endif + +# ifndef UTF8_MAXBYTES +# define UTF8_MAXBYTES UTF8_MAXLEN +# endif + +static UV +utf8n_to_uvchr_msgs(const U8 *s, + STRLEN curlen, + STRLEN *retlen, + const U32 flags, + U32 * errors, + AV ** msgs) +{ + const U8 * const s0 = s; + const U8 * send = NULL; + U32 possible_problems = 0; + UV uv = *s; + STRLEN expectlen = 0; + U8 * adjusted_s0 = (U8 *) s0; + U8 temp_char_buf[UTF8_MAXBYTES + 1]; + UV uv_so_far = 0; + dTHX; + + assert(errors == NULL); /* This functionality has been stripped */ + + if (UNLIKELY(curlen == 0)) { + possible_problems |= UTF8_GOT_EMPTY; + curlen = 0; + uv = UNICODE_REPLACEMENT; + goto ready_to_handle_errors; + } + + expectlen = UTF8SKIP(s); + + if (retlen) { + *retlen = expectlen; + } + + if (UTF8_IS_INVARIANT(uv)) { + return uv; + } + + if (UNLIKELY(UTF8_IS_CONTINUATION(uv))) { + possible_problems |= UTF8_GOT_CONTINUATION; + curlen = 1; + uv = UNICODE_REPLACEMENT; + goto ready_to_handle_errors; + } + + uv = NATIVE_UTF8_TO_I8(uv) & UTF_START_MASK(expectlen); + + send = (U8*) s0; + if (UNLIKELY(curlen < expectlen)) { + possible_problems |= UTF8_GOT_SHORT; + send += curlen; + } + else { + send += expectlen; + } + + for (s = s0 + 1; s < send; s++) { + if (LIKELY(UTF8_IS_CONTINUATION(*s))) { + uv = UTF8_ACCUMULATE(uv, *s); + continue; + } + + possible_problems |= UTF8_GOT_NON_CONTINUATION; + break; + } /* End of loop through the character's bytes */ + + curlen = s - s0; + +# define UTF8_GOT_TOO_SHORT (UTF8_GOT_SHORT|UTF8_GOT_NON_CONTINUATION) + + if (UNLIKELY(possible_problems & UTF8_GOT_TOO_SHORT)) { + uv_so_far = uv; + uv = UNICODE_REPLACEMENT; + } + + if (UNLIKELY(0 < S_does_utf8_overflow(s0, s, 1))) { + possible_problems |= UTF8_GOT_OVERFLOW; + uv = UNICODE_REPLACEMENT; + } + + if ( ( LIKELY(! possible_problems) + && UNLIKELY(expectlen > (STRLEN) OFFUNISKIP(uv))) + || ( UNLIKELY(possible_problems) + && ( UNLIKELY(! UTF8_IS_START(*s0)) + || ( curlen > 1 + && UNLIKELY(0 < S_is_utf8_overlong_given_start_byte_ok(s0, + s - s0)))))) + { + possible_problems |= UTF8_GOT_LONG; + + if ( UNLIKELY( possible_problems & UTF8_GOT_TOO_SHORT) + && LIKELY(! (possible_problems & UTF8_GOT_OVERFLOW))) + { + UV min_uv = uv_so_far; + STRLEN i; + + for (i = curlen; i < expectlen; i++) { + min_uv = UTF8_ACCUMULATE(min_uv, + I8_TO_NATIVE_UTF8(UTF_CONTINUATION_MARK)); + } + + adjusted_s0 = temp_char_buf; + (void) uvoffuni_to_utf8_flags(adjusted_s0, min_uv, 0); + } + } + + /* Here, we have found all the possible problems, except for when the input + * is for a problematic code point not allowed by the input parameters. */ + + /* uv is valid for overlongs */ + if ( ( ( LIKELY(! (possible_problems & ~UTF8_GOT_LONG)) + && uv >= UNICODE_SURROGATE_FIRST) + || ( UNLIKELY(possible_problems) + && isUTF8_POSSIBLY_PROBLEMATIC(*adjusted_s0))) + && ((flags & ( UTF8_DISALLOW_NONCHAR + |UTF8_DISALLOW_SURROGATE + |UTF8_DISALLOW_SUPER)))) + { + if (LIKELY(! (possible_problems & ~UTF8_GOT_LONG))) { + if (UNLIKELY(UNICODE_IS_SURROGATE(uv))) { + possible_problems |= UTF8_GOT_SURROGATE; + } + else if (UNLIKELY(uv > PERL_UNICODE_MAX)) { + possible_problems |= UTF8_GOT_SUPER; + } + else if (UNLIKELY(UNICODE_IS_NONCHAR(uv))) { + possible_problems |= UTF8_GOT_NONCHAR; + } + } + else { + if (UNLIKELY(NATIVE_UTF8_TO_I8(*adjusted_s0) + >= FIRST_START_BYTE_THAT_IS_DEFINITELY_SUPER)) + { + possible_problems |= UTF8_GOT_SUPER; + } + else if (curlen > 1) { + if (UNLIKELY(IS_UTF8_2_BYTE_SUPER( + NATIVE_UTF8_TO_I8(*adjusted_s0), + NATIVE_UTF8_TO_I8(*(adjusted_s0 + 1))))) + { + possible_problems |= UTF8_GOT_SUPER; + } + else if (UNLIKELY(IS_UTF8_2_BYTE_SURROGATE( + NATIVE_UTF8_TO_I8(*adjusted_s0), + NATIVE_UTF8_TO_I8(*(adjusted_s0 + 1))))) + { + possible_problems |= UTF8_GOT_SURROGATE; + } + } + } + } + + ready_to_handle_errors: + + if (UNLIKELY(possible_problems)) { + bool disallowed = FALSE; + const U32 orig_problems = possible_problems; + + if (msgs) { + *msgs = NULL; + } + + while (possible_problems) { /* Handle each possible problem */ + UV pack_warn = 0; + char * message = NULL; + U32 this_flag_bit = 0; + + /* Each 'if' clause handles one problem. They are ordered so that + * the first ones' messages will be displayed before the later + * ones; this is kinda in decreasing severity order. But the + * overlong must come last, as it changes 'uv' looked at by the + * others */ + if (possible_problems & UTF8_GOT_OVERFLOW) { + + /* Overflow means also got a super; we handle both here */ + possible_problems + &= ~(UTF8_GOT_OVERFLOW|UTF8_GOT_SUPER); + + /* Disallow if any of the categories say to */ + if ( ! (flags & UTF8_ALLOW_OVERFLOW) + || (flags & UTF8_DISALLOW_SUPER)) + { + disallowed = TRUE; + } + + /* Likewise, warn if any say to */ + if ( ! (flags & UTF8_ALLOW_OVERFLOW)) { + + /* The warnings code explicitly says it doesn't handle the + * case of packWARN2 and two categories which have + * parent-child relationship. Even if it works now to + * raise the warning if either is enabled, it wouldn't + * necessarily do so in the future. We output (only) the + * most dire warning */ + if (! (flags & UTF8_CHECK_ONLY)) { + if (msgs || ckWARN_d(WARN_UTF8)) { + pack_warn = packWARN(WARN_UTF8); + } + else if (msgs || ckWARN_d(WARN_NON_UNICODE)) { + pack_warn = packWARN(WARN_NON_UNICODE); + } + if (pack_warn) { + message = Perl_form(aTHX_ "%s: %s (overflows)", + malformed_text, + _byte_dump_string(s0, curlen)); + this_flag_bit = UTF8_GOT_OVERFLOW; + } + } + } + } + else if (possible_problems & UTF8_GOT_EMPTY) { + possible_problems &= ~UTF8_GOT_EMPTY; + + if (! (flags & UTF8_ALLOW_EMPTY)) { + disallowed = TRUE; + if ( (msgs + || ckWARN_d(WARN_UTF8)) && ! (flags & UTF8_CHECK_ONLY)) + { + pack_warn = packWARN(WARN_UTF8); + message = Perl_form(aTHX_ "%s (empty string)", + malformed_text); + this_flag_bit = UTF8_GOT_EMPTY; + } + } + } + else if (possible_problems & UTF8_GOT_CONTINUATION) { + possible_problems &= ~UTF8_GOT_CONTINUATION; + + if (! (flags & UTF8_ALLOW_CONTINUATION)) { + disallowed = TRUE; + if (( msgs + || ckWARN_d(WARN_UTF8)) && ! (flags & UTF8_CHECK_ONLY)) + { + pack_warn = packWARN(WARN_UTF8); + message = Perl_form(aTHX_ + "%s: %s (unexpected continuation byte 0x%02x," + " with no preceding start byte)", + malformed_text, + _byte_dump_string(s0, 1), *s0); + this_flag_bit = UTF8_GOT_CONTINUATION; + } + } + } + else if (possible_problems & UTF8_GOT_SHORT) { + possible_problems &= ~UTF8_GOT_SHORT; + + if (! (flags & UTF8_ALLOW_SHORT)) { + disallowed = TRUE; + if (( msgs + || ckWARN_d(WARN_UTF8)) && ! (flags & UTF8_CHECK_ONLY)) + { + pack_warn = packWARN(WARN_UTF8); + message = Perl_form(aTHX_ + "%s: %s (too short; %d byte%s available, need %d)", + malformed_text, + _byte_dump_string(s0, send - s0), + (int)curlen, + curlen == 1 ? "" : "s", + (int)expectlen); + this_flag_bit = UTF8_GOT_SHORT; + } + } + + } + else if (possible_problems & UTF8_GOT_NON_CONTINUATION) { + possible_problems &= ~UTF8_GOT_NON_CONTINUATION; + + if (! (flags & UTF8_ALLOW_NON_CONTINUATION)) { + disallowed = TRUE; + if (( msgs + || ckWARN_d(WARN_UTF8)) && ! (flags & UTF8_CHECK_ONLY)) + { + int printlen = s - s0; + pack_warn = packWARN(WARN_UTF8); + message = Perl_form(aTHX_ "%s", + S_unexpected_non_continuation_text(s0, + printlen, + s - s0, + (int) expectlen)); + this_flag_bit = UTF8_GOT_NON_CONTINUATION; + } + } + } + else if (possible_problems & UTF8_GOT_SURROGATE) { + possible_problems &= ~UTF8_GOT_SURROGATE; + + if (flags & UTF8_WARN_SURROGATE) { + + if ( ! (flags & UTF8_CHECK_ONLY) + && (msgs || ckWARN_d(WARN_SURROGATE))) + { + pack_warn = packWARN(WARN_SURROGATE); + + /* These are the only errors that can occur with a + * surrogate when the 'uv' isn't valid */ + if (orig_problems & UTF8_GOT_TOO_SHORT) { + message = Perl_form(aTHX_ + "UTF-16 surrogate (any UTF-8 sequence that" + " starts with \"%s\" is for a surrogate)", + _byte_dump_string(s0, curlen)); + } + else { + message = Perl_form(aTHX_ surrogate_cp_format, uv); + } + this_flag_bit = UTF8_GOT_SURROGATE; + } + } + + if (flags & UTF8_DISALLOW_SURROGATE) { + disallowed = TRUE; + } + } + else if (possible_problems & UTF8_GOT_SUPER) { + possible_problems &= ~UTF8_GOT_SUPER; + + if (flags & UTF8_WARN_SUPER) { + + if ( ! (flags & UTF8_CHECK_ONLY) + && (msgs || ckWARN_d(WARN_NON_UNICODE))) + { + pack_warn = packWARN(WARN_NON_UNICODE); + + if (orig_problems & UTF8_GOT_TOO_SHORT) { + message = Perl_form(aTHX_ + "Any UTF-8 sequence that starts with" + " \"%s\" is for a non-Unicode code point," + " may not be portable", + _byte_dump_string(s0, curlen)); + } + else { + message = Perl_form(aTHX_ super_cp_format, uv); + } + this_flag_bit = UTF8_GOT_SUPER; + } + } + + if (flags & UTF8_DISALLOW_SUPER) { + disallowed = TRUE; + } + } + else if (possible_problems & UTF8_GOT_NONCHAR) { + possible_problems &= ~UTF8_GOT_NONCHAR; + + if (flags & UTF8_WARN_NONCHAR) { + + if ( ! (flags & UTF8_CHECK_ONLY) + && (msgs || ckWARN_d(WARN_NONCHAR))) + { + /* The code above should have guaranteed that we don't + * get here with errors other than overlong */ + assert (! (orig_problems + & ~(UTF8_GOT_LONG|UTF8_GOT_NONCHAR))); + + pack_warn = packWARN(WARN_NONCHAR); + message = Perl_form(aTHX_ nonchar_cp_format, uv); + this_flag_bit = UTF8_GOT_NONCHAR; + } + } + + if (flags & UTF8_DISALLOW_NONCHAR) { + disallowed = TRUE; + } + } + else if (possible_problems & UTF8_GOT_LONG) { + possible_problems &= ~UTF8_GOT_LONG; + + if (flags & UTF8_ALLOW_LONG) { + uv = UNICODE_REPLACEMENT; + } + else { + disallowed = TRUE; + + if (( msgs + || ckWARN_d(WARN_UTF8)) && ! (flags & UTF8_CHECK_ONLY)) + { + pack_warn = packWARN(WARN_UTF8); + + /* These error types cause 'uv' to be something that + * isn't what was intended, so can't use it in the + * message. The other error types either can't + * generate an overlong, or else the 'uv' is valid */ + if (orig_problems & + (UTF8_GOT_TOO_SHORT|UTF8_GOT_OVERFLOW)) + { + message = Perl_form(aTHX_ + "%s: %s (any UTF-8 sequence that starts" + " with \"%s\" is overlong which can and" + " should be represented with a" + " different, shorter sequence)", + malformed_text, + _byte_dump_string(s0, send - s0), + _byte_dump_string(s0, curlen)); + } + else { + U8 tmpbuf[UTF8_MAXBYTES+1]; + const U8 * const e = uvoffuni_to_utf8_flags(tmpbuf, + uv, 0); + /* Don't use U+ for non-Unicode code points, which + * includes those in the Latin1 range */ + const char * preface = ( uv > PERL_UNICODE_MAX +# ifdef EBCDIC + || uv <= 0xFF +# endif + ) + ? "0x" + : "U+"; + message = Perl_form(aTHX_ + "%s: %s (overlong; instead use %s to represent" + " %s%0*" UVXf ")", + malformed_text, + _byte_dump_string(s0, send - s0), + _byte_dump_string(tmpbuf, e - tmpbuf), + preface, + ((uv < 256) ? 2 : 4), /* Field width of 2 for + small code points */ + UNI_TO_NATIVE(uv)); + } + this_flag_bit = UTF8_GOT_LONG; + } + } + } /* End of looking through the possible flags */ + + /* Display the message (if any) for the problem being handled in + * this iteration of the loop */ + if (message) { + if (msgs) { + assert(this_flag_bit); + + if (*msgs == NULL) { + *msgs = newAV(); + } + + av_push(*msgs, newRV_noinc((SV*) S_new_msg_hv(message, + pack_warn))); + } + else if (PL_op) + Perl_warner(aTHX_ pack_warn, "%s in %s", message, + OP_DESC(PL_op)); + else + Perl_warner(aTHX_ pack_warn, "%s", message); + } + } /* End of 'while (possible_problems)' */ + + if (retlen) { + *retlen = curlen; + } + + if (disallowed) { + if (flags & UTF8_CHECK_ONLY && retlen) { + *retlen = ((STRLEN) -1); + } + return 0; + } + } + + return UNI_TO_NATIVE(uv); +} + +static STRLEN +S_is_utf8_char_helper(const U8 * const s, const U8 * e, const U32 flags) +{ + STRLEN len; + const U8 *x; + + assert(0 == (flags & ~UTF8_DISALLOW_ILLEGAL_INTERCHANGE)); + assert(! UTF8_IS_INVARIANT(*s)); + + if (UNLIKELY(! UTF8_IS_START(*s))) { + return 0; + } + + /* Examine a maximum of a single whole code point */ + if (e - s > UTF8SKIP(s)) { + e = s + UTF8SKIP(s); + } + + len = e - s; + + if (flags && isUTF8_POSSIBLY_PROBLEMATIC(*s)) { + const U8 s0 = NATIVE_UTF8_TO_I8(s[0]); + + if ( (flags & UTF8_DISALLOW_SUPER) + && UNLIKELY(s0 >= FIRST_START_BYTE_THAT_IS_DEFINITELY_SUPER)) + { + return 0; /* Above Unicode */ + } + + if (len > 1) { + const U8 s1 = NATIVE_UTF8_TO_I8(s[1]); + + if ( (flags & UTF8_DISALLOW_SUPER) + && UNLIKELY(IS_UTF8_2_BYTE_SUPER(s0, s1))) + { + return 0; /* Above Unicode */ + } + + if ( (flags & UTF8_DISALLOW_SURROGATE) + && UNLIKELY(IS_UTF8_2_BYTE_SURROGATE(s0, s1))) + { + return 0; /* Surrogate */ + } + + if ( (flags & UTF8_DISALLOW_NONCHAR) + && UNLIKELY(UTF8_IS_NONCHAR(s, e))) + { + return 0; /* Noncharacter code point */ + } + } + } + + for (x = s + 1; x < e; x++) { + if (UNLIKELY(! UTF8_IS_CONTINUATION(*x))) { + return 0; + } + } + + if (len > 1 && S_is_utf8_overlong_given_start_byte_ok(s, len) > 0) { + return 0; + } + + if (0 < S_does_utf8_overflow(s, e, 0)) { + return 0; + } + + return UTF8SKIP(s); +} + +# undef is_utf8_valid_partial_char_flags + +static bool +is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags) +{ + + return S_is_utf8_char_helper(s, e, flags) > 0; +} + +# undef is_utf8_string_loc_flags + +static bool +is_utf8_string_loc_flags(const U8 *s, STRLEN len, const U8 **ep, const U32 flags) +{ + const U8* send = s + len; + + assert(0 == (flags & ~UTF8_DISALLOW_ILLEGAL_INTERCHANGE)); + + while (s < send) { + if (UTF8_IS_INVARIANT(*s)) { + s++; + } + else if ( UNLIKELY(send - s < UTF8SKIP(s)) + || ! S_is_utf8_char_helper(s, send, flags)) + { + *ep = s; + return 0; + } + else { + s += UTF8SKIP(s); + } + } + + *ep = send; + + return 1; +} + +#endif + +#if defined(IN_UNICODE_XS) && ! defined(uvchr_to_utf8_flags_msgs) + +# define MY_SHIFT UTF_ACCUMULATION_SHIFT +# define MY_MARK UTF_CONTINUATION_MARK +# define MY_MASK UTF_CONTINUATION_MASK + +static const char cp_above_legal_max[] = + "Use of code point 0x%" UVXf " is not allowed; the" + " permissible max is 0x%" UVXf; + +/* These two can be dummys, as they are not looked at by the function, which + * has hard-coded into it what flags it is expecting are */ +# ifndef UNICODE_DISALLOW_ILLEGAL_INTERCHANGE +# define UNICODE_DISALLOW_ILLEGAL_INTERCHANGE 0 +# endif +# ifndef UNICODE_WARN_ILLEGAL_INTERCHANGE +# define UNICODE_WARN_ILLEGAL_INTERCHANGE 0 +# endif + +# ifndef OFFUNI_IS_INVARIANT +# define OFFUNI_IS_INVARIANT(cp) UNI_IS_INVARIANT(cp) +# endif +# ifndef MAX_EXTERNALLY_LEGAL_CP +# define MAX_EXTERNALLY_LEGAL_CP ((UV) (IV_MAX)) +# endif +# ifndef LATIN1_TO_NATIVE +# define LATIN1_TO_NATIVE(a) ASCII_TO_NATIVE(a) +# endif +# ifndef I8_TO_NATIVE_UTF8 +# define I8_TO_NATIVE_UTF8(a) NATIVE_TO_UTF(a) +# endif +# ifndef MAX_UTF8_TWO_BYTE +# define MAX_UTF8_TWO_BYTE (32 * (1U << UTF_ACCUMULATION_SHIFT) - 1) +# endif +# ifndef UNICODE_IS_32_CONTIGUOUS_NONCHARS +# define UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) ((UV) (uv) >= 0xFDD0 \ + && (UV) (uv) <= 0xFDEF) +# endif +# ifndef UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER +# define UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv) \ + (((UV) (uv) & 0xFFFE) == 0xFFFE) +# endif +# ifndef UNICODE_IS_SUPER +# define UNICODE_IS_SUPER(uv) ((UV) (uv) > PERL_UNICODE_MAX) +# endif +# ifndef OFFUNISKIP +# define OFFUNISKIP(cp) UNISKIP(NATIVE_TO_UNI(cp)) +# endif + +# define HANDLE_UNICODE_SURROGATE(uv, flags, msgs) \ + STMT_START { \ + U32 category = packWARN(WARN_SURROGATE); \ + const char * format = surrogate_cp_format; \ + *msgs = S_new_msg_hv(Perl_form(aTHX_ format, uv), \ + category); \ + return NULL; \ + } STMT_END; + +# define HANDLE_UNICODE_NONCHAR(uv, flags, msgs) \ + STMT_START { \ + U32 category = packWARN(WARN_NONCHAR); \ + const char * format = nonchar_cp_format; \ + *msgs = S_new_msg_hv(Perl_form(aTHX_ format, uv), \ + category); \ + return NULL; \ + } STMT_END; + +static U8 * +uvchr_to_utf8_flags_msgs(U8 *d, UV uv, const UV flags, HV** msgs) +{ + dTHX; + + assert(msgs); + + PERL_UNUSED_ARG(flags); + + uv = NATIVE_TO_UNI(uv); + + *msgs = NULL; + + if (OFFUNI_IS_INVARIANT(uv)) { + *d++ = LATIN1_TO_NATIVE(uv); + return d; + } + + if (uv <= MAX_UTF8_TWO_BYTE) { + *d++ = I8_TO_NATIVE_UTF8(( uv >> MY_SHIFT) | UTF_START_MARK(2)); + *d++ = I8_TO_NATIVE_UTF8(( uv & MY_MASK) | MY_MARK); + return d; + } + + /* Not 2-byte; test for and handle 3-byte result. In the test immediately + * below, the 16 is for start bytes E0-EF (which are all the possible ones + * for 3 byte characters). The 2 is for 2 continuation bytes; these each + * contribute MY_SHIFT bits. This yields 0x4000 on EBCDIC platforms, 0x1_0000 + * on ASCII; so 3 bytes covers the range 0x400-0x3FFF on EBCDIC; + * 0x800-0xFFFF on ASCII */ + if (uv < (16 * (1U << (2 * MY_SHIFT)))) { + *d++ = I8_TO_NATIVE_UTF8(( uv >> ((3 - 1) * MY_SHIFT)) | UTF_START_MARK(3)); + *d++ = I8_TO_NATIVE_UTF8(((uv >> ((2 - 1) * MY_SHIFT)) & MY_MASK) | MY_MARK); + *d++ = I8_TO_NATIVE_UTF8(( uv /* (1 - 1) */ & MY_MASK) | MY_MARK); + +#ifndef EBCDIC /* These problematic code points are 4 bytes on EBCDIC, so + aren't tested here */ + /* The most likely code points in this range are below the surrogates. + * Do an extra test to quickly exclude those. */ + if (UNLIKELY(uv >= UNICODE_SURROGATE_FIRST)) { + if (UNLIKELY( UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) + || UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv))) + { + HANDLE_UNICODE_NONCHAR(uv, flags, msgs); + } + else if (UNLIKELY(UNICODE_IS_SURROGATE(uv))) { + HANDLE_UNICODE_SURROGATE(uv, flags, msgs); + } + } +#endif + return d; + } + + /* Not 3-byte; that means the code point is at least 0x1_0000 on ASCII + * platforms, and 0x4000 on EBCDIC. There are problematic cases that can + * happen starting with 4-byte characters on ASCII platforms. We unify the + * code for these with EBCDIC, even though some of them require 5-bytes on + * those, because khw believes the code saving is worth the very slight + * performance hit on these high EBCDIC code points. */ + + if (UNLIKELY(UNICODE_IS_SUPER(uv))) { + const char * format = super_cp_format; + U32 category = packWARN(WARN_NON_UNICODE); + if (UNLIKELY(uv > MAX_EXTERNALLY_LEGAL_CP)) { + Perl_croak(aTHX_ cp_above_legal_max, uv, MAX_EXTERNALLY_LEGAL_CP); + } + *msgs = S_new_msg_hv(Perl_form(aTHX_ format, uv), category); + return NULL; + } + else if (UNLIKELY(UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv))) { + HANDLE_UNICODE_NONCHAR(uv, flags, msgs); + } + + /* Test for and handle 4-byte result. In the test immediately below, the + * 8 is for start bytes F0-F7 (which are all the possible ones for 4 byte + * characters). The 3 is for 3 continuation bytes; these each contribute + * MY_SHIFT bits. This yields 0x4_0000 on EBCDIC platforms, 0x20_0000 on + * ASCII, so 4 bytes covers the range 0x4000-0x3_FFFF on EBCDIC; + * 0x1_0000-0x1F_FFFF on ASCII */ + if (uv < (8 * (1U << (3 * MY_SHIFT)))) { + *d++ = I8_TO_NATIVE_UTF8(( uv >> ((4 - 1) * MY_SHIFT)) | UTF_START_MARK(4)); + *d++ = I8_TO_NATIVE_UTF8(((uv >> ((3 - 1) * MY_SHIFT)) & MY_MASK) | MY_MARK); + *d++ = I8_TO_NATIVE_UTF8(((uv >> ((2 - 1) * MY_SHIFT)) & MY_MASK) | MY_MARK); + *d++ = I8_TO_NATIVE_UTF8(( uv /* (1 - 1) */ & MY_MASK) | MY_MARK); + +#ifdef EBCDIC /* These were handled on ASCII platforms in the code for 3-byte + characters. The end-plane non-characters for EBCDIC were + handled just above */ + if (UNLIKELY(UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv))) { + HANDLE_UNICODE_NONCHAR(uv, flags, msgs); + } + else if (UNLIKELY(UNICODE_IS_SURROGATE(uv))) { + HANDLE_UNICODE_SURROGATE(uv, flags, msgs); + } +#endif + + return d; + } + + /* Not 4-byte; that means the code point is at least 0x20_0000 on ASCII + * platforms, and 0x4000 on EBCDIC. At this point we switch to a loop + * format. The unrolled version above turns out to not save all that much + * time, and at these high code points (well above the legal Unicode range + * on ASCII platforms, and well above anything in common use in EBCDIC), + * khw believes that less code outweighs slight performance gains. */ + + { + STRLEN len = OFFUNISKIP(uv); + U8 *p = d+len-1; + while (p > d) { + *p-- = I8_TO_NATIVE_UTF8((uv & MY_MASK) | MY_MARK); + uv >>= MY_SHIFT; + } + *p = I8_TO_NATIVE_UTF8((uv & UTF_START_MASK(len)) | UTF_START_MARK(len)); + return d+len; + } +} + +#endif /* End of defining our own uvchr_to_utf8_flags_msgs() */ +#endif /* End of UTF8SKIP */ + #endif /* ENCODE_H */ diff --git a/gnu/usr.bin/perl/cpan/Encode/t/decode.t b/gnu/usr.bin/perl/cpan/Encode/t/decode.t index 93c992cf548..66723f4423f 100644 --- a/gnu/usr.bin/perl/cpan/Encode/t/decode.t +++ b/gnu/usr.bin/perl/cpan/Encode/t/decode.t @@ -1,5 +1,5 @@ # -# $Id: decode.t,v 1.4 2017/10/06 22:21:53 dankogai Exp $ +# $Id: decode.t,v 1.5 2019/01/31 04:26:40 dankogai Exp $ # use strict; use Encode qw(decode_utf8 FB_CROAK find_encoding decode); @@ -51,9 +51,12 @@ $orig = "\xC3\x80"; $orig =~ /(..)/; is(Encode::decode_utf8($1), "\N{U+C0}", 'passing magic regex to Encode::decode_utf8'); -$orig = "\xC3\x80"; -*a = $orig; -is(Encode::decode_utf8(*a), "*main::\N{U+C0}", 'passing typeglob to Encode::decode_utf8'); +SKIP: { + skip "Perl Version ($]) is older than v5.27.1", 1 if $] < 5.027001; + $orig = "\xC3\x80"; + *a = $orig; + is(Encode::decode_utf8(*a), "*main::\N{U+C0}", 'passing typeglob to Encode::decode_utf8'); +} $orig = "\N{U+C0}"; $orig =~ /(.)/; diff --git a/gnu/usr.bin/perl/cpan/Encode/t/xml.t b/gnu/usr.bin/perl/cpan/Encode/t/xml.t new file mode 100644 index 00000000000..2c7e721d914 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Encode/t/xml.t @@ -0,0 +1,22 @@ +use strict; +use warnings; + +use Encode; +use Test::More; + +my $content = String->new("--\x{30c6}--"); +my $text = Encode::encode('latin1', $content, Encode::FB_XMLCREF); +is $text, "--テ--"; + +done_testing; + +package String; +use overload + '""' => sub { ${$_[0]} }, fallback => 1; + +sub new { + my($class, $str) = @_; + bless \$str, $class; +} + +1; diff --git a/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm b/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm index 817c6d90c6b..39e15d5c3c8 100644 --- a/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm +++ b/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm @@ -1,7 +1,142 @@ -package File::Temp; +package File::Temp; # git description: v0.2308-7-g3bb4d88 # ABSTRACT: return name and handle of a temporary file safely -our $VERSION = '0.2304'; # VERSION +our $VERSION = '0.2309'; + +#pod =begin :__INTERNALS +#pod +#pod =head1 PORTABILITY +#pod +#pod This section is at the top in order to provide easier access to +#pod porters. It is not expected to be rendered by a standard pod +#pod formatting tool. Please skip straight to the SYNOPSIS section if you +#pod are not trying to port this module to a new platform. +#pod +#pod This module is designed to be portable across operating systems and it +#pod currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS +#pod (Classic). When porting to a new OS there are generally three main +#pod issues that have to be solved: +#pod +#pod =over 4 +#pod +#pod =item * +#pod +#pod Can the OS unlink an open file? If it can not then the +#pod C<_can_unlink_opened_file> method should be modified. +#pod +#pod =item * +#pod +#pod Are the return values from C<stat> reliable? By default all the +#pod return values from C<stat> are compared when unlinking a temporary +#pod file using the filename and the handle. Operating systems other than +#pod unix do not always have valid entries in all fields. If utility function +#pod C<File::Temp::unlink0> fails then the C<stat> comparison should be +#pod modified accordingly. +#pod +#pod =item * +#pod +#pod Security. Systems that can not support a test for the sticky bit +#pod on a directory can not use the MEDIUM and HIGH security tests. +#pod The C<_can_do_level> method should be modified accordingly. +#pod +#pod =back +#pod +#pod =end :__INTERNALS +#pod +#pod =head1 SYNOPSIS +#pod +#pod use File::Temp qw/ tempfile tempdir /; +#pod +#pod $fh = tempfile(); +#pod ($fh, $filename) = tempfile(); +#pod +#pod ($fh, $filename) = tempfile( $template, DIR => $dir); +#pod ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); +#pod ($fh, $filename) = tempfile( $template, TMPDIR => 1 ); +#pod +#pod binmode( $fh, ":utf8" ); +#pod +#pod $dir = tempdir( CLEANUP => 1 ); +#pod ($fh, $filename) = tempfile( DIR => $dir ); +#pod +#pod Object interface: +#pod +#pod require File::Temp; +#pod use File::Temp (); +#pod use File::Temp qw/ :seekable /; +#pod +#pod $fh = File::Temp->new(); +#pod $fname = $fh->filename; +#pod +#pod $fh = File::Temp->new(TEMPLATE => $template); +#pod $fname = $fh->filename; +#pod +#pod $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' ); +#pod print $tmp "Some data\n"; +#pod print "Filename is $tmp\n"; +#pod $tmp->seek( 0, SEEK_END ); +#pod +#pod $dir = File::Temp->newdir(); # CLEANUP => 1 by default +#pod +#pod The following interfaces are provided for compatibility with +#pod existing APIs. They should not be used in new code. +#pod +#pod MkTemp family: +#pod +#pod use File::Temp qw/ :mktemp /; +#pod +#pod ($fh, $file) = mkstemp( "tmpfileXXXXX" ); +#pod ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix); +#pod +#pod $tmpdir = mkdtemp( $template ); +#pod +#pod $unopened_file = mktemp( $template ); +#pod +#pod POSIX functions: +#pod +#pod use File::Temp qw/ :POSIX /; +#pod +#pod $file = tmpnam(); +#pod $fh = tmpfile(); +#pod +#pod ($fh, $file) = tmpnam(); +#pod +#pod Compatibility functions: +#pod +#pod $unopened_file = File::Temp::tempnam( $dir, $pfx ); +#pod +#pod =head1 DESCRIPTION +#pod +#pod C<File::Temp> can be used to create and open temporary files in a safe +#pod way. There is both a function interface and an object-oriented +#pod interface. The File::Temp constructor or the tempfile() function can +#pod be used to return the name and the open filehandle of a temporary +#pod file. The tempdir() function can be used to create a temporary +#pod directory. +#pod +#pod The security aspect of temporary file creation is emphasized such that +#pod a filehandle and filename are returned together. This helps guarantee +#pod that a race condition can not occur where the temporary file is +#pod created by another process between checking for the existence of the +#pod file and its opening. Additional security levels are provided to +#pod check, for example, that the sticky bit is set on world writable +#pod directories. See L<"safe_level"> for more information. +#pod +#pod For compatibility with popular C library functions, Perl implementations of +#pod the mkstemp() family of functions are provided. These are, mkstemp(), +#pod mkstemps(), mkdtemp() and mktemp(). +#pod +#pod Additionally, implementations of the standard L<POSIX|POSIX> +#pod tmpnam() and tmpfile() functions are provided if required. +#pod +#pod Implementations of mktemp(), tmpnam(), and tempnam() are provided, +#pod but should be used with caution since they return only a filename +#pod that was valid when function was called, so cannot guarantee +#pod that the file will not exist by the time the caller opens the filename. +#pod +#pod Filehandles returned by these functions support the seekable methods. +#pod +#pod =cut # Toolchain targets v5.8.1, but we'll try to support back to v5.6 anyway. # It might be possible to make this v5.5, but many v5.6isms are creeping @@ -33,11 +168,8 @@ use parent 0.221 qw/ IO::Handle IO::Seekable /; use overload '""' => "STRINGIFY", '0+' => "NUMIFY", fallback => 1; -# use 'our' on v5.6.0 -use vars qw(@EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL); - -$DEBUG = 0; -$KEEP_ALL = 0; +our $DEBUG = 0; +our $KEEP_ALL = 0; # We are exporting functions @@ -45,7 +177,7 @@ use Exporter 5.57 'import'; # 5.57 lets us import 'import' # Export list - to allow fine tuning of export table -@EXPORT_OK = qw{ +our @EXPORT_OK = qw{ tempfile tempdir tmpnam @@ -63,7 +195,7 @@ use Exporter 5.57 'import'; # 5.57 lets us import 'import' # Groups of functions for export -%EXPORT_TAGS = ( +our %EXPORT_TAGS = ( 'POSIX' => [qw/ tmpnam tmpfile /], 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/], 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /], @@ -174,7 +306,7 @@ my %FILES_CREATED_BY_OBJECT; # the file as soon as it is closed. Usually indicates # use of the O_TEMPORARY flag to sysopen. # Usually irrelevant on unix -# "use_exlock" => Indicates that O_EXLOCK should be used. Default is true. +# "use_exlock" => Indicates that O_EXLOCK should be used. Default is false. # 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 @@ -211,7 +343,7 @@ sub _gettemp { "mkdir" => 0, "suffixlen" => 0, "unlink_on_close" => 0, - "use_exlock" => 1, + "use_exlock" => 0, "ErrStr" => \$tempErrStr, ); @@ -437,7 +569,7 @@ sub _gettemp { # 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 + # Store current attempt - in principle 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 @@ -880,6 +1012,59 @@ sub _parse_args { return( \@template, \%args ); } +#pod =head1 OBJECT-ORIENTED INTERFACE +#pod +#pod This is the primary interface for interacting with +#pod C<File::Temp>. Using the OO interface a temporary file can be created +#pod when the object is constructed and the file can be removed when the +#pod object is no longer required. +#pod +#pod Note that there is no method to obtain the filehandle from the +#pod C<File::Temp> object. The object itself acts as a filehandle. The object +#pod isa C<IO::Handle> and isa C<IO::Seekable> so all those methods are +#pod available. +#pod +#pod Also, the object is configured such that it stringifies to the name of the +#pod temporary file and so can be compared to a filename directly. It numifies +#pod to the C<refaddr> the same as other handles and so can be compared to other +#pod handles with C<==>. +#pod +#pod $fh eq $filename # as a string +#pod $fh != \*STDOUT # as a number +#pod +#pod Available since 0.14. +#pod +#pod =over 4 +#pod +#pod =item B<new> +#pod +#pod Create a temporary file object. +#pod +#pod my $tmp = File::Temp->new(); +#pod +#pod by default the object is constructed as if C<tempfile> +#pod was called without options, but with the additional behaviour +#pod that the temporary file is removed by the object destructor +#pod if UNLINK is set to true (the default). +#pod +#pod Supported arguments are the same as for C<tempfile>: UNLINK +#pod (defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename +#pod template is specified using the TEMPLATE option. The OPEN option +#pod is not supported (the file is always opened). +#pod +#pod $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX', +#pod DIR => 'mydir', +#pod SUFFIX => '.dat'); +#pod +#pod Arguments are case insensitive. +#pod +#pod Can call croak() if an error occurs. +#pod +#pod Available since 0.14. +#pod +#pod TEMPLATE available since 0.23 +#pod +#pod =cut sub new { my $proto = shift; @@ -917,6 +1102,27 @@ sub new { return $fh; } +#pod =item B<newdir> +#pod +#pod Create a temporary directory using an object oriented interface. +#pod +#pod $dir = File::Temp->newdir(); +#pod +#pod By default the directory is deleted when the object goes out of scope. +#pod +#pod Supports the same options as the C<tempdir> function. Note that directories +#pod created with this method default to CLEANUP => 1. +#pod +#pod $dir = File::Temp->newdir( $template, %options ); +#pod +#pod A template may be specified either with a leading template or +#pod with a TEMPLATE argument. +#pod +#pod Available since 0.19. +#pod +#pod TEMPLATE available since 0.23. +#pod +#pod =cut sub newdir { my $self = shift; @@ -941,6 +1147,19 @@ sub newdir { }, "File::Temp::Dir"; } +#pod =item B<filename> +#pod +#pod Return the name of the temporary file associated with this object +#pod (if the object was created using the "new" constructor). +#pod +#pod $filename = $tmp->filename; +#pod +#pod This method is called automatically when the object is used as +#pod a string. +#pod +#pod Current API available since 0.14 +#pod +#pod =cut sub filename { my $self = shift; @@ -959,6 +1178,27 @@ sub NUMIFY { return refaddr($_[0]); } +#pod =item B<dirname> +#pod +#pod Return the name of the temporary directory associated with this +#pod object (if the object was created using the "newdir" constructor). +#pod +#pod $dirname = $tmpdir->dirname; +#pod +#pod This method is called automatically when the object is used in string context. +#pod +#pod =item B<unlink_on_destroy> +#pod +#pod Control whether the file is unlinked when the object goes out of scope. +#pod The file is removed if this value is true and $KEEP_ALL is not. +#pod +#pod $fh->unlink_on_destroy( 1 ); +#pod +#pod Default is for the file to be removed. +#pod +#pod Current API available since 0.15 +#pod +#pod =cut sub unlink_on_destroy { my $self = shift; @@ -968,6 +1208,29 @@ sub unlink_on_destroy { return ${*$self}{UNLINK}; } +#pod =item B<DESTROY> +#pod +#pod When the object goes out of scope, the destructor is called. This +#pod destructor will attempt to unlink the file (using L<unlink1|"unlink1">) +#pod if the constructor was called with UNLINK set to 1 (the default state +#pod if UNLINK is not specified). +#pod +#pod No error is given if the unlink fails. +#pod +#pod If the object has been passed to a child process during a fork, the +#pod file will be deleted when the object goes out of scope in the parent. +#pod +#pod For a temporary directory object the directory will be removed unless +#pod the CLEANUP argument was used in the constructor (and set to false) or +#pod C<unlink_on_destroy> was modified after creation. Note that if a temp +#pod directory is your current directory, it cannot be removed - a warning +#pod will be given in this case. C<chdir()> out of the directory before +#pod letting the object go out of scope. +#pod +#pod If the global variable $KEEP_ALL is true, the file or directory +#pod will not be removed. +#pod +#pod =cut sub DESTROY { local($., $@, $!, $^E, $?); @@ -1001,6 +1264,114 @@ sub DESTROY { } } +#pod =back +#pod +#pod =head1 FUNCTIONS +#pod +#pod This section describes the recommended interface for generating +#pod temporary files and directories. +#pod +#pod =over 4 +#pod +#pod =item B<tempfile> +#pod +#pod This is the basic function to generate temporary files. +#pod The behaviour of the file can be changed using various options: +#pod +#pod $fh = tempfile(); +#pod ($fh, $filename) = tempfile(); +#pod +#pod Create a temporary file in the directory specified for temporary +#pod files, as specified by the tmpdir() function in L<File::Spec>. +#pod +#pod ($fh, $filename) = tempfile($template); +#pod +#pod Create a temporary file in the current directory using the supplied +#pod template. Trailing `X' characters are replaced with random letters to +#pod generate the filename. At least four `X' characters must be present +#pod at the end of the template. +#pod +#pod ($fh, $filename) = tempfile($template, SUFFIX => $suffix) +#pod +#pod Same as previously, except that a suffix is added to the template +#pod after the `X' translation. Useful for ensuring that a temporary +#pod filename has a particular extension when needed by other applications. +#pod But see the WARNING at the end. +#pod +#pod ($fh, $filename) = tempfile($template, DIR => $dir); +#pod +#pod Translates the template as before except that a directory name +#pod is specified. +#pod +#pod ($fh, $filename) = tempfile($template, TMPDIR => 1); +#pod +#pod Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file +#pod into the same temporary directory as would be used if no template was +#pod specified at all. +#pod +#pod ($fh, $filename) = tempfile($template, UNLINK => 1); +#pod +#pod Return the filename and filehandle as before except that the file is +#pod automatically removed when the program exits (dependent on +#pod $KEEP_ALL). Default is for the file to be removed if a file handle is +#pod requested and to be kept if the filename is requested. In a scalar +#pod context (where no filename is returned) the file is always deleted +#pod either (depending on the operating system) on exit or when it is +#pod closed (unless $KEEP_ALL is true when the temp file is created). +#pod +#pod Use the object-oriented interface if fine-grained control of when +#pod a file is removed is required. +#pod +#pod If the template is not specified, a template is always +#pod automatically generated. This temporary file is placed in tmpdir() +#pod (L<File::Spec>) unless a directory is specified explicitly with the +#pod DIR option. +#pod +#pod $fh = tempfile( DIR => $dir ); +#pod +#pod If called in scalar context, only the filehandle is returned and the +#pod file will automatically be deleted when closed on operating systems +#pod that support this (see the description of tmpfile() elsewhere in this +#pod document). This is the preferred mode of operation, as if you only +#pod have a filehandle, you can never create a race condition by fumbling +#pod with the filename. On systems that can not unlink an open file or can +#pod not mark a file as temporary when it is opened (for example, Windows +#pod NT uses the C<O_TEMPORARY> flag) the file is marked for deletion when +#pod the program ends (equivalent to setting UNLINK to 1). The C<UNLINK> +#pod flag is ignored if present. +#pod +#pod (undef, $filename) = tempfile($template, OPEN => 0); +#pod +#pod This will return the filename based on the template but +#pod will not open this file. Cannot be used in conjunction with +#pod UNLINK set to true. Default is to always open the file +#pod to protect from possible race conditions. A warning is issued +#pod if warnings are turned on. Consider using the tmpnam() +#pod and mktemp() functions described elsewhere in this document +#pod if opening the file is not required. +#pod +#pod To open the temporary filehandle with O_EXLOCK (open with exclusive +#pod file lock) use C<< EXLOCK=>1 >>. This is supported only by some +#pod operating systems (most notably BSD derived systems). By default +#pod EXLOCK will be false. Former C<File::Temp> versions set EXLOCK to +#pod true, so to be sure to get an unlocked filehandle also with older +#pod versions, explicitly set C<< EXLOCK=>0 >>. +#pod +#pod ($fh, $filename) = tempfile($template, EXLOCK => 1); +#pod +#pod Options can be combined as required. +#pod +#pod Will croak() if there is an error. +#pod +#pod Available since 0.05. +#pod +#pod UNLINK flag available since 0.10. +#pod +#pod TMPDIR flag available since 0.19. +#pod +#pod EXLOCK flag available since 0.19. +#pod +#pod =cut sub tempfile { if ( @_ && $_[0] eq 'File::Temp' ) { @@ -1016,7 +1387,7 @@ sub tempfile { "UNLINK" => 0, # Do not unlink file on exit "OPEN" => 1, # Open file "TMPDIR" => 0, # Place tempfile in tempdir if template specified - "EXLOCK" => 1, # Open file with O_EXLOCK + "EXLOCK" => 0, # Open file with O_EXLOCK ); # Check to see whether we have an odd or even number of arguments @@ -1056,7 +1427,7 @@ sub tempfile { } elsif ($options{TMPDIR}) { - $template = File::Spec->catfile(File::Spec->tmpdir, $template ); + $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), $template ); } @@ -1068,7 +1439,7 @@ sub tempfile { } else { - $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX); + $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), TEMPXXX); } @@ -1131,6 +1502,122 @@ sub tempfile { } +# On Windows under taint mode, File::Spec could suggest "C:\" as a tempdir +# which might not be writable. If that is the case, we fallback to a +# user directory. See https://rt.cpan.org/Ticket/Display.html?id=60340 + +{ + my ($alt_tmpdir, $checked); + + sub _wrap_file_spec_tmpdir { + return File::Spec->tmpdir unless $^O eq "MSWin32" && ${^TAINT}; + + if ( $checked ) { + return $alt_tmpdir ? $alt_tmpdir : File::Spec->tmpdir; + } + + # probe what File::Spec gives and find a fallback + my $xxpath = _replace_XX( "X" x 10, 0 ); + + # First, see if File::Spec->tmpdir is writable + my $tmpdir = File::Spec->tmpdir; + my $testpath = File::Spec->catdir( $tmpdir, $xxpath ); + if (mkdir( $testpath, 0700) ) { + $checked = 1; + rmdir $testpath; + return $tmpdir; + } + + # Next, see if CSIDL_LOCAL_APPDATA is writable + require Win32; + my $local_app = File::Spec->catdir( + Win32::GetFolderPath( Win32::CSIDL_LOCAL_APPDATA() ), 'Temp' + ); + $testpath = File::Spec->catdir( $local_app, $xxpath ); + if ( -e $local_app or mkdir( $local_app, 0700 ) ) { + if (mkdir( $testpath, 0700) ) { + $checked = 1; + rmdir $testpath; + return $alt_tmpdir = $local_app; + } + } + + # Can't find something writable + croak << "HERE"; +Couldn't find a writable temp directory in taint mode. Tried: + $tmpdir + $local_app + +Try setting and untainting the TMPDIR environment variable. +HERE + + } +} + +#pod =item B<tempdir> +#pod +#pod This is the recommended interface for creation of temporary +#pod directories. By default the directory will not be removed on exit +#pod (that is, it won't be temporary; this behaviour can not be changed +#pod because of issues with backwards compatibility). To enable removal +#pod either use the CLEANUP option which will trigger removal on program +#pod exit, or consider using the "newdir" method in the object interface which +#pod will allow the directory to be cleaned up when the object goes out of +#pod scope. +#pod +#pod The behaviour of the function depends on the arguments: +#pod +#pod $tempdir = tempdir(); +#pod +#pod Create a directory in tmpdir() (see L<File::Spec|File::Spec>). +#pod +#pod $tempdir = tempdir( $template ); +#pod +#pod Create a directory from the supplied template. This template is +#pod similar to that described for tempfile(). `X' characters at the end +#pod of the template are replaced with random letters to construct the +#pod directory name. At least four `X' characters must be in the template. +#pod +#pod $tempdir = tempdir ( DIR => $dir ); +#pod +#pod Specifies the directory to use for the temporary directory. +#pod The temporary directory name is derived from an internal template. +#pod +#pod $tempdir = tempdir ( $template, DIR => $dir ); +#pod +#pod Prepend the supplied directory name to the template. The template +#pod should not include parent directory specifications itself. Any parent +#pod directory specifications are removed from the template before +#pod prepending the supplied directory. +#pod +#pod $tempdir = tempdir ( $template, TMPDIR => 1 ); +#pod +#pod Using the supplied template, create the temporary directory in +#pod a standard location for temporary files. Equivalent to doing +#pod +#pod $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir); +#pod +#pod but shorter. Parent directory specifications are stripped from the +#pod template itself. The C<TMPDIR> option is ignored if C<DIR> is set +#pod explicitly. Additionally, C<TMPDIR> is implied if neither a template +#pod nor a directory are supplied. +#pod +#pod $tempdir = tempdir( $template, CLEANUP => 1); +#pod +#pod Create a temporary directory using the supplied template, but +#pod attempt to remove it (and all files inside it) when the program +#pod exits. Note that an attempt will be made to remove all files from +#pod the directory even if they were not created by this module (otherwise +#pod why ask to clean it up?). The directory removal is made with +#pod the rmtree() function from the L<File::Path|File::Path> module. +#pod Of course, if the template is not specified, the temporary directory +#pod will be created in tmpdir() and will also be removed at program exit. +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut # ' @@ -1181,7 +1668,7 @@ sub tempdir { } elsif ($options{TMPDIR}) { # Prepend tmpdir - $template = File::Spec->catdir(File::Spec->tmpdir, $template); + $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), $template); } @@ -1195,7 +1682,7 @@ sub tempdir { } else { - $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX); + $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), TEMPXXX); } @@ -1232,6 +1719,33 @@ sub tempdir { } +#pod =back +#pod +#pod =head1 MKTEMP FUNCTIONS +#pod +#pod The following functions are Perl implementations of the +#pod mktemp() family of temp file generation system calls. +#pod +#pod =over 4 +#pod +#pod =item B<mkstemp> +#pod +#pod Given a template, returns a filehandle to the temporary file and the name +#pod of the file. +#pod +#pod ($fh, $name) = mkstemp( $template ); +#pod +#pod In scalar context, just the filehandle is returned. +#pod +#pod The template may be any filename with some number of X's appended +#pod to it, for example F</tmp/temp.XXXX>. The trailing X's are replaced +#pod with unique alphanumeric combinations. +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut @@ -1260,6 +1774,23 @@ sub mkstemp { } +#pod =item B<mkstemps> +#pod +#pod Similar to mkstemp(), except that an extra argument can be supplied +#pod with a suffix to be appended to the template. +#pod +#pod ($fh, $name) = mkstemps( $template, $suffix ); +#pod +#pod For example a template of C<testXXXXXX> and suffix of C<.dat> +#pod would generate a file similar to F<testhGji_w.dat>. +#pod +#pod Returns just the filehandle alone when called in scalar context. +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut sub mkstemps { @@ -1289,6 +1820,22 @@ sub mkstemps { } +#pod =item B<mkdtemp> +#pod +#pod Create a directory from a template. The template must end in +#pod X's that are replaced by the routine. +#pod +#pod $tmpdir_name = mkdtemp($template); +#pod +#pod Returns the name of the temporary directory created. +#pod +#pod Directory must be removed by the caller. +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut #' # for emacs @@ -1320,6 +1867,20 @@ sub mkdtemp { } +#pod =item B<mktemp> +#pod +#pod Returns a valid temporary filename but does not guarantee +#pod that the file will not be opened by someone else. +#pod +#pod $unopened_file = mktemp($template); +#pod +#pod Template is the same as that required by mkstemp(). +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut sub mktemp { @@ -1340,12 +1901,57 @@ sub mktemp { return $tmpname; } +#pod =back +#pod +#pod =head1 POSIX FUNCTIONS +#pod +#pod This section describes the re-implementation of the tmpnam() +#pod and tmpfile() functions described in L<POSIX> +#pod using the mkstemp() from this module. +#pod +#pod Unlike the L<POSIX|POSIX> implementations, the directory used +#pod for the temporary file is not specified in a system include +#pod file (C<P_tmpdir>) but simply depends on the choice of tmpdir() +#pod returned by L<File::Spec|File::Spec>. On some implementations this +#pod location can be set using the C<TMPDIR> environment variable, which +#pod may not be secure. +#pod If this is a problem, simply use mkstemp() and specify a template. +#pod +#pod =over 4 +#pod +#pod =item B<tmpnam> +#pod +#pod When called in scalar context, returns the full name (including path) +#pod of a temporary file (uses mktemp()). The only check is that the file does +#pod not already exist, but there is no guarantee that that condition will +#pod continue to apply. +#pod +#pod $file = tmpnam(); +#pod +#pod When called in list context, a filehandle to the open file and +#pod a filename are returned. This is achieved by calling mkstemp() +#pod after constructing a suitable template. +#pod +#pod ($fh, $file) = tmpnam(); +#pod +#pod If possible, this form should be used to prevent possible +#pod race conditions. +#pod +#pod See L<File::Spec/tmpdir> for information on the choice of temporary +#pod directory for a particular operating system. +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut sub tmpnam { # Retrieve the temporary directory name - my $tmpdir = File::Spec->tmpdir; + my $tmpdir = _wrap_file_spec_tmpdir(); + # XXX I don't know under what circumstances this occurs, -- xdg 2016-04-02 croak "Error temporary directory is not writable" if $tmpdir eq ''; @@ -1360,6 +1966,26 @@ sub tmpnam { } +#pod =item B<tmpfile> +#pod +#pod Returns the filehandle of a temporary file. +#pod +#pod $fh = tmpfile(); +#pod +#pod The file is removed when the filehandle is closed or when the program +#pod exits. No access to the filename is provided. +#pod +#pod If the temporary file can not be created undef is returned. +#pod Currently this command will probably not work when the temporary +#pod directory is on an NFS file system. +#pod +#pod Will croak() if there is an error. +#pod +#pod Available since 0.05. +#pod +#pod Returning undef if unable to create file added in 0.12. +#pod +#pod =cut sub tmpfile { @@ -1375,6 +2001,38 @@ sub tmpfile { } +#pod =back +#pod +#pod =head1 ADDITIONAL FUNCTIONS +#pod +#pod These functions are provided for backwards compatibility +#pod with common tempfile generation C library functions. +#pod +#pod They are not exported and must be addressed using the full package +#pod name. +#pod +#pod =over 4 +#pod +#pod =item B<tempnam> +#pod +#pod Return the name of a temporary file in the specified directory +#pod using a prefix. The file is guaranteed not to exist at the time +#pod the function was called, but such guarantees are good for one +#pod clock tick only. Always use the proper form of C<sysopen> +#pod with C<O_CREAT | O_EXCL> if you must open such a filename. +#pod +#pod $filename = File::Temp::tempnam( $dir, $prefix ); +#pod +#pod Equivalent to running mktemp() with $dir/$prefixXXXXXXXX +#pod (using unix file convention as an example) +#pod +#pod Because this function uses mktemp(), it can suffer from race conditions. +#pod +#pod Will croak() if there is an error. +#pod +#pod Current API available since 0.05. +#pod +#pod =cut sub tempnam { @@ -1392,6 +2050,65 @@ sub tempnam { } +#pod =back +#pod +#pod =head1 UTILITY FUNCTIONS +#pod +#pod Useful functions for dealing with the filehandle and filename. +#pod +#pod =over 4 +#pod +#pod =item B<unlink0> +#pod +#pod Given an open filehandle and the associated filename, make a safe +#pod unlink. This is achieved by first checking that the filename and +#pod filehandle initially point to the same file and that the number of +#pod links to the file is 1 (all fields returned by stat() are compared). +#pod Then the filename is unlinked and the filehandle checked once again to +#pod verify that the number of links on that file is now 0. This is the +#pod closest you can come to making sure that the filename unlinked was the +#pod same as the file whose descriptor you hold. +#pod +#pod unlink0($fh, $path) +#pod or die "Error unlinking file $path safely"; +#pod +#pod Returns false on error but croaks() if there is a security +#pod anomaly. The filehandle is not closed since on some occasions this is +#pod not required. +#pod +#pod On some platforms, for example Windows NT, it is not possible to +#pod unlink an open file (the file must be closed first). On those +#pod platforms, the actual unlinking is deferred until the program ends and +#pod good status is returned. A check is still performed to make sure that +#pod the filehandle and filename are pointing to the same thing (but not at +#pod the time the end block is executed since the deferred removal may not +#pod have access to the filehandle). +#pod +#pod Additionally, on Windows NT not all the fields returned by stat() can +#pod be compared. For example, the C<dev> and C<rdev> fields seem to be +#pod different. Also, it seems that the size of the file returned by stat() +#pod does not always agree, with C<stat(FH)> being more accurate than +#pod C<stat(filename)>, presumably because of caching issues even when +#pod using autoflush (this is usually overcome by waiting a while after +#pod writing to the tempfile before attempting to C<unlink0> it). +#pod +#pod Finally, on NFS file systems the link count of the file handle does +#pod not always go to zero immediately after unlinking. Currently, this +#pod command is expected to fail on NFS disks. +#pod +#pod This function is disabled if the global variable $KEEP_ALL is true +#pod and an unlink on open file is supported. If the unlink is to be deferred +#pod to the END block, the file is still registered for removal. +#pod +#pod This function should not be called if you are using the object oriented +#pod interface since the it will interfere with the object destructor deleting +#pod the file. +#pod +#pod Available Since 0.05. +#pod +#pod If can not unlink open file, defer removal until later available since 0.06. +#pod +#pod =cut sub unlink0 { @@ -1432,6 +2149,32 @@ sub unlink0 { return 1; } +#pod =item B<cmpstat> +#pod +#pod Compare C<stat> of filehandle with C<stat> of provided filename. This +#pod can be used to check that the filename and filehandle initially point +#pod to the same file and that the number of links to the file is 1 (all +#pod fields returned by stat() are compared). +#pod +#pod cmpstat($fh, $path) +#pod or die "Error comparing handle with file"; +#pod +#pod Returns false if the stat information differs or if the link count is +#pod greater than 1. Calls croak if there is a security anomaly. +#pod +#pod On certain platforms, for example Windows, not all the fields returned by stat() +#pod can be compared. For example, the C<dev> and C<rdev> fields seem to be +#pod different in Windows. Also, it seems that the size of the file +#pod returned by stat() does not always agree, with C<stat(FH)> being more +#pod accurate than C<stat(filename)>, presumably because of caching issues +#pod even when using autoflush (this is usually overcome by waiting a while +#pod after writing to the tempfile before attempting to C<unlink0> it). +#pod +#pod Not exported by default. +#pod +#pod Current API available since 0.14. +#pod +#pod =cut sub cmpstat { @@ -1504,6 +2247,29 @@ sub cmpstat { return 1; } +#pod =item B<unlink1> +#pod +#pod Similar to C<unlink0> except after file comparison using cmpstat, the +#pod filehandle is closed prior to attempting to unlink the file. This +#pod allows the file to be removed without using an END block, but does +#pod mean that the post-unlink comparison of the filehandle state provided +#pod by C<unlink0> is not available. +#pod +#pod unlink1($fh, $path) +#pod or die "Error closing and unlinking file"; +#pod +#pod Usually called from the object destructor when using the OO interface. +#pod +#pod Not exported by default. +#pod +#pod This function is disabled if the global variable $KEEP_ALL is true. +#pod +#pod Can call croak() if there is a security anomaly during the stat() +#pod comparison. +#pod +#pod Current API available since 0.14. +#pod +#pod =cut sub unlink1 { croak 'Usage: unlink1(filehandle, filename)' @@ -1527,6 +2293,107 @@ sub unlink1 { return unlink($path); } +#pod =item B<cleanup> +#pod +#pod Calling this function will cause any temp files or temp directories +#pod that are registered for removal to be removed. This happens automatically +#pod when the process exits but can be triggered manually if the caller is sure +#pod that none of the temp files are required. This method can be registered as +#pod an Apache callback. +#pod +#pod Note that if a temp directory is your current directory, it cannot be +#pod removed. C<chdir()> out of the directory first before calling +#pod C<cleanup()>. (For the cleanup at program exit when the CLEANUP flag +#pod is set, this happens automatically.) +#pod +#pod On OSes where temp files are automatically removed when the temp file +#pod is closed, calling this function will have no effect other than to remove +#pod temporary directories (which may include temporary files). +#pod +#pod File::Temp::cleanup(); +#pod +#pod Not exported by default. +#pod +#pod Current API available since 0.15. +#pod +#pod =back +#pod +#pod =head1 PACKAGE VARIABLES +#pod +#pod These functions control the global state of the package. +#pod +#pod =over 4 +#pod +#pod =item B<safe_level> +#pod +#pod Controls the lengths to which the module will go to check the safety of the +#pod temporary file or directory before proceeding. +#pod Options are: +#pod +#pod =over 8 +#pod +#pod =item STANDARD +#pod +#pod Do the basic security measures to ensure the directory exists and is +#pod writable, that temporary files are opened only if they do not already +#pod exist, and that possible race conditions are avoided. Finally the +#pod L<unlink0|"unlink0"> function is used to remove files safely. +#pod +#pod =item MEDIUM +#pod +#pod In addition to the STANDARD security, the output directory is checked +#pod to make sure that it is owned either by root or the user running the +#pod program. If the directory is writable by group or by other, it is then +#pod checked to make sure that the sticky bit is set. +#pod +#pod Will not work on platforms that do not support the C<-k> test +#pod for sticky bit. +#pod +#pod =item HIGH +#pod +#pod In addition to the MEDIUM security checks, also check for the +#pod possibility of ``chown() giveaway'' using the L<POSIX|POSIX> +#pod sysconf() function. If this is a possibility, each directory in the +#pod path is checked in turn for safeness, recursively walking back to the +#pod root directory. +#pod +#pod For platforms that do not support the L<POSIX|POSIX> +#pod C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is +#pod assumed that ``chown() giveaway'' is possible and the recursive test +#pod is performed. +#pod +#pod =back +#pod +#pod The level can be changed as follows: +#pod +#pod File::Temp->safe_level( File::Temp::HIGH ); +#pod +#pod The level constants are not exported by the module. +#pod +#pod Currently, you must be running at least perl v5.6.0 in order to +#pod run with MEDIUM or HIGH security. This is simply because the +#pod safety tests use functions from L<Fcntl|Fcntl> that are not +#pod available in older versions of perl. The problem is that the version +#pod number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though +#pod they are different versions. +#pod +#pod On systems that do not support the HIGH or MEDIUM safety levels +#pod (for example Win NT or OS/2) any attempt to change the level will +#pod be ignored. The decision to ignore rather than raise an exception +#pod allows portable programs to be written with high security in mind +#pod for the systems that can support this without those programs failing +#pod on systems where the extra tests are irrelevant. +#pod +#pod If you really need to see whether the change has been accepted +#pod simply examine the return value of C<safe_level>. +#pod +#pod $newlevel = File::Temp->safe_level( File::Temp::HIGH ); +#pod die "Could not change to high security" +#pod if $newlevel != File::Temp::HIGH; +#pod +#pod Available since 0.05. +#pod +#pod =cut { # protect from using the variable itself @@ -1552,6 +2419,28 @@ sub unlink1 { } } +#pod =item TopSystemUID +#pod +#pod This is the highest UID on the current system that refers to a root +#pod UID. This is used to make sure that the temporary directory is +#pod owned by a system UID (C<root>, C<bin>, C<sys> etc) rather than +#pod simply by root. +#pod +#pod This is required since on many unix systems C</tmp> is not owned +#pod by root. +#pod +#pod Default is to assume that any UID less than or equal to 10 is a root +#pod UID. +#pod +#pod File::Temp->top_system_uid(10); +#pod my $topid = File::Temp->top_system_uid; +#pod +#pod This value can be adjusted to reduce security checking if required. +#pod The value is only relevant when C<safe_level> is set to MEDIUM or higher. +#pod +#pod Available since 0.05. +#pod +#pod =cut { my $TopSystemUID = 10; @@ -1568,8 +2457,131 @@ sub unlink1 { } } - -package File::Temp::Dir; +#pod =item B<$KEEP_ALL> +#pod +#pod Controls whether temporary files and directories should be retained +#pod regardless of any instructions in the program to remove them +#pod automatically. This is useful for debugging but should not be used in +#pod production code. +#pod +#pod $File::Temp::KEEP_ALL = 1; +#pod +#pod Default is for files to be removed as requested by the caller. +#pod +#pod In some cases, files will only be retained if this variable is true +#pod when the file is created. This means that you can not create a temporary +#pod file, set this variable and expect the temp file to still be around +#pod when the program exits. +#pod +#pod =item B<$DEBUG> +#pod +#pod Controls whether debugging messages should be enabled. +#pod +#pod $File::Temp::DEBUG = 1; +#pod +#pod Default is for debugging mode to be disabled. +#pod +#pod Available since 0.15. +#pod +#pod =back +#pod +#pod =head1 WARNING +#pod +#pod For maximum security, endeavour always to avoid ever looking at, +#pod touching, or even imputing the existence of the filename. You do not +#pod know that that filename is connected to the same file as the handle +#pod you have, and attempts to check this can only trigger more race +#pod conditions. It's far more secure to use the filehandle alone and +#pod dispense with the filename altogether. +#pod +#pod If you need to pass the handle to something that expects a filename +#pod then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for +#pod arbitrary programs. Perl code that uses the 2-argument version of +#pod C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you +#pod will need to pass the filename. You will have to clear the +#pod close-on-exec bit on that file descriptor before passing it to another +#pod process. +#pod +#pod use Fcntl qw/F_SETFD F_GETFD/; +#pod fcntl($tmpfh, F_SETFD, 0) +#pod or die "Can't clear close-on-exec flag on temp fh: $!\n"; +#pod +#pod =head2 Temporary files and NFS +#pod +#pod Some problems are associated with using temporary files that reside +#pod on NFS file systems and it is recommended that a local filesystem +#pod is used whenever possible. Some of the security tests will most probably +#pod fail when the temp file is not local. Additionally, be aware that +#pod the performance of I/O operations over NFS will not be as good as for +#pod a local disk. +#pod +#pod =head2 Forking +#pod +#pod In some cases files created by File::Temp are removed from within an +#pod END block. Since END blocks are triggered when a child process exits +#pod (unless C<POSIX::_exit()> is used by the child) File::Temp takes care +#pod to only remove those temp files created by a particular process ID. This +#pod means that a child will not attempt to remove temp files created by the +#pod parent process. +#pod +#pod If you are forking many processes in parallel that are all creating +#pod temporary files, you may need to reset the random number seed using +#pod srand(EXPR) in each child else all the children will attempt to walk +#pod through the same set of random file names and may well cause +#pod themselves to give up if they exceed the number of retry attempts. +#pod +#pod =head2 Directory removal +#pod +#pod Note that if you have chdir'ed into the temporary directory and it is +#pod subsequently cleaned up (either in the END block or as part of object +#pod destruction), then you will get a warning from File::Path::rmtree(). +#pod +#pod =head2 Taint mode +#pod +#pod If you need to run code under taint mode, updating to the latest +#pod L<File::Spec> is highly recommended. On Windows, if the directory +#pod given by L<File::Spec::tmpdir> isn't writable, File::Temp will attempt +#pod to fallback to the user's local application data directory or croak +#pod with an error. +#pod +#pod =head2 BINMODE +#pod +#pod The file returned by File::Temp will have been opened in binary mode +#pod if such a mode is available. If that is not correct, use the C<binmode()> +#pod function to change the mode of the filehandle. +#pod +#pod Note that you can modify the encoding of a file opened by File::Temp +#pod also by using C<binmode()>. +#pod +#pod =head1 HISTORY +#pod +#pod Originally began life in May 1999 as an XS interface to the system +#pod mkstemp() function. In March 2000, the OpenBSD mkstemp() code was +#pod translated to Perl for total control of the code's +#pod security checking, to ensure the presence of the function regardless of +#pod operating system and to help with portability. The module was shipped +#pod as a standard part of perl from v5.6.1. +#pod +#pod Thanks to Tom Christiansen for suggesting that this module +#pod should be written and providing ideas for code improvements and +#pod security enhancements. +#pod +#pod =head1 SEE ALSO +#pod +#pod L<POSIX/tmpnam>, L<POSIX/tmpfile>, L<File::Spec>, L<File::Path> +#pod +#pod See L<IO::File> and L<File::MkTemp>, L<Apache::TempFile> for +#pod different implementations of temporary file handling. +#pod +#pod See L<File::Tempdir> for an alternative object-oriented wrapper for +#pod the C<tempdir> function. +#pod +#pod =cut + +package ## hide from PAUSE + File::Temp::Dir; + +our $VERSION = '0.2309'; use File::Path qw/ rmtree /; use strict; @@ -1621,11 +2633,14 @@ sub DESTROY { 1; + +# vim: ts=2 sts=2 sw=2 et: + __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -1633,7 +2648,7 @@ File::Temp - return name and handle of a temporary file safely =head1 VERSION -version 0.2304 +version 0.2309 =head1 SYNOPSIS @@ -1668,6 +2683,8 @@ Object interface: print "Filename is $tmp\n"; $tmp->seek( 0, SEEK_END ); + $dir = File::Temp->newdir(); # CLEANUP => 1 by default + The following interfaces are provided for compatibility with existing APIs. They should not be used in new code. @@ -1726,7 +2743,7 @@ that the file will not exist by the time the caller opens the filename. Filehandles returned by these functions support the seekable methods. -=begin __INTERNALS +=begin :__INTERNALS =head1 PORTABILITY @@ -1739,6 +2756,7 @@ 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 * @@ -1763,7 +2781,7 @@ The C<_can_do_level> method should be modified accordingly. =back -=end __INTERNALS +=end :__INTERNALS =head1 OBJECT-ORIENTED INTERFACE @@ -1785,6 +2803,8 @@ handles with C<==>. $fh eq $filename # as a string $fh != \*STDOUT # as a number +Available since 0.14. + =over 4 =item B<new> @@ -1811,6 +2831,10 @@ Arguments are case insensitive. Can call croak() if an error occurs. +Available since 0.14. + +TEMPLATE available since 0.23 + =item B<newdir> Create a temporary directory using an object oriented interface. @@ -1827,6 +2851,10 @@ created with this method default to CLEANUP => 1. A template may be specified either with a leading template or with a TEMPLATE argument. +Available since 0.19. + +TEMPLATE available since 0.23. + =item B<filename> Return the name of the temporary file associated with this object @@ -1837,6 +2865,8 @@ Return the name of the temporary file associated with this object This method is called automatically when the object is used as a string. +Current API available since 0.14 + =item B<dirname> Return the name of the temporary directory associated with this @@ -1855,6 +2885,8 @@ The file is removed if this value is true and $KEEP_ALL is not. Default is for the file to be removed. +Current API available since 0.15 + =item B<DESTROY> When the object goes out of scope, the destructor is called. This @@ -1963,20 +2995,27 @@ if warnings are turned on. Consider using the tmpnam() and mktemp() functions described elsewhere in this document if opening the file is not required. -If the operating system supports it (for example BSD derived systems), the -filehandle will be opened with O_EXLOCK (open with exclusive file lock). -This can sometimes cause problems if the intention is to pass the filename -to another system that expects to take an exclusive lock itself (such as -DBD::SQLite) whilst ensuring that the tempfile is not reused. In this -situation the "EXLOCK" option can be passed to tempfile. By default EXLOCK -will be true (this retains compatibility with earlier releases). +To open the temporary filehandle with O_EXLOCK (open with exclusive +file lock) use C<< EXLOCK=>1 >>. This is supported only by some +operating systems (most notably BSD derived systems). By default +EXLOCK will be false. Former C<File::Temp> versions set EXLOCK to +true, so to be sure to get an unlocked filehandle also with older +versions, explicitly set C<< EXLOCK=>0 >>. - ($fh, $filename) = tempfile($template, EXLOCK => 0); + ($fh, $filename) = tempfile($template, EXLOCK => 1); Options can be combined as required. Will croak() if there is an error. +Available since 0.05. + +UNLINK flag available since 0.10. + +TMPDIR flag available since 0.19. + +EXLOCK flag available since 0.19. + =item B<tempdir> This is the recommended interface for creation of temporary @@ -2038,6 +3077,8 @@ will be created in tmpdir() and will also be removed at program exit. Will croak() if there is an error. +Current API available since 0.05. + =back =head1 MKTEMP FUNCTIONS @@ -2062,6 +3103,8 @@ with unique alphanumeric combinations. Will croak() if there is an error. +Current API available since 0.05. + =item B<mkstemps> Similar to mkstemp(), except that an extra argument can be supplied @@ -2076,6 +3119,8 @@ Returns just the filehandle alone when called in scalar context. Will croak() if there is an error. +Current API available since 0.05. + =item B<mkdtemp> Create a directory from a template. The template must end in @@ -2089,6 +3134,8 @@ Directory must be removed by the caller. Will croak() if there is an error. +Current API available since 0.05. + =item B<mktemp> Returns a valid temporary filename but does not guarantee @@ -2100,6 +3147,8 @@ Template is the same as that required by mkstemp(). Will croak() if there is an error. +Current API available since 0.05. + =back =head1 POSIX FUNCTIONS @@ -2141,6 +3190,8 @@ directory for a particular operating system. Will croak() if there is an error. +Current API available since 0.05. + =item B<tmpfile> Returns the filehandle of a temporary file. @@ -2156,6 +3207,10 @@ directory is on an NFS file system. Will croak() if there is an error. +Available since 0.05. + +Returning undef if unable to create file added in 0.12. + =back =head1 ADDITIONAL FUNCTIONS @@ -2185,6 +3240,8 @@ Because this function uses mktemp(), it can suffer from race conditions. Will croak() if there is an error. +Current API available since 0.05. + =back =head1 UTILITY FUNCTIONS @@ -2239,6 +3296,10 @@ This function should not be called if you are using the object oriented interface since the it will interfere with the object destructor deleting the file. +Available Since 0.05. + +If can not unlink open file, defer removal until later available since 0.06. + =item B<cmpstat> Compare C<stat> of filehandle with C<stat> of provided filename. This @@ -2262,6 +3323,8 @@ after writing to the tempfile before attempting to C<unlink0> it). Not exported by default. +Current API available since 0.14. + =item B<unlink1> Similar to C<unlink0> except after file comparison using cmpstat, the @@ -2282,6 +3345,8 @@ This function is disabled if the global variable $KEEP_ALL is true. Can call croak() if there is a security anomaly during the stat() comparison. +Current API available since 0.14. + =item B<cleanup> Calling this function will cause any temp files or temp directories @@ -2303,6 +3368,8 @@ temporary directories (which may include temporary files). Not exported by default. +Current API available since 0.15. + =back =head1 PACKAGE VARIABLES @@ -2378,6 +3445,8 @@ simply examine the return value of C<safe_level>. die "Could not change to high security" if $newlevel != File::Temp::HIGH; +Available since 0.05. + =item TopSystemUID This is the highest UID on the current system that refers to a root @@ -2397,6 +3466,8 @@ 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. +Available since 0.05. + =item B<$KEEP_ALL> Controls whether temporary files and directories should be retained @@ -2421,6 +3492,8 @@ Controls whether debugging messages should be enabled. Default is for debugging mode to be disabled. +Available since 0.15. + =back =head1 WARNING @@ -2477,7 +3550,10 @@ destruction), then you will get a warning from File::Path::rmtree(). =head2 Taint mode If you need to run code under taint mode, updating to the latest -L<File::Spec> is highly recommended. +L<File::Spec> is highly recommended. On Windows, if the directory +given by L<File::Spec::tmpdir> isn't writable, File::Temp will attempt +to fallback to the user's local application data directory or croak +with an error. =head2 BINMODE @@ -2513,26 +3589,16 @@ the C<tempdir> function. =for Pod::Coverage STRINGIFY NUMIFY top_system_uid -# vim: ts=2 sts=2 sw=2 et: - -=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan - =head1 SUPPORT -=head2 Bugs / Feature Requests - -Please report any bugs or feature requests through the issue tracker -at L<http://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp>. -You will be notified automatically of any progress on your issue. - -=head2 Source Code +Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp> +(or L<bug-File-Temp@rt.cpan.org|mailto:bug-File-Temp@rt.cpan.org>). -This is open source software. The code repository is available for -public review and contribution under the terms of the license. +There is also a mailing list available for users of this distribution, at +L<http://lists.perl.org/list/cpan-workers.html>. -L<https://github.com/Perl-Toolchain-Gang/File-Temp> - - git clone https://github.com/Perl-Toolchain-Gang/File-Temp.git +There is also an irc channel available for users of this distribution, at +L<C<#toolchain> on C<irc.perl.org>|irc://irc.perl.org/#toolchain>. =head1 AUTHOR @@ -2540,31 +3606,33 @@ Tim Jenness <tjenness@cpan.org> =head1 CONTRIBUTORS +=for stopwords David Golden Karen Etheridge Slaven Rezic Peter Rabbitson Olivier Mengue Kevin Ryde John Acklam James E. Keenan Brian Mowrey Dagfinn Ilmari MannsÃ¥ker Steinbrunner Ed Avis Guillem Jover Ben Tilly + =over 4 =item * -Ben Tilly <btilly@gmail.com> +David Golden <dagolden@cpan.org> =item * -David Golden <dagolden@cpan.org> +Karen Etheridge <ether@cpan.org> =item * -David Steinbrunner <dsteinbrunner@pobox.com> +Slaven Rezic <slaven@rezic.de> =item * -Ed Avis <eda@linux01.wcl.local> +Peter Rabbitson <ribasushi@cpan.org> =item * -James E. Keenan <jkeen@verizon.net> +Olivier Mengue <dolmen@cpan.org> =item * -Karen Etheridge <ether@cpan.org> +David Golden <xdg@xdg.me> =item * @@ -2572,21 +3640,45 @@ Kevin Ryde <user42@zip.com.au> =item * -Olivier Mengue <dolmen@cpan.org> +Peter John Acklam <pjacklam@online.no> =item * -Peter John Acklam <pjacklam@online.no> +Slaven Rezic <slaven.rezic@idealo.de> =item * -Peter Rabbitson <ribasushi@cpan.org> +James E. Keenan <jkeen@verizon.net> + +=item * + +Brian Mowrey <brian@drlabs.org> + +=item * + +Dagfinn Ilmari MannsÃ¥ker <ilmari@ilmari.org> + +=item * + +David Steinbrunner <dsteinbrunner@pobox.com> + +=item * + +Ed Avis <eda@linux01.wcl.local> + +=item * + +Guillem Jover <guillem@hadrons.org> + +=item * + +Ben Tilly <btilly@gmail.com> =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2013 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. +This software is copyright (c) 2019 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/lock.t b/gnu/usr.bin/perl/cpan/File-Temp/t/lock.t index ff8c7f954d7..0d7dfc0152c 100755 --- a/gnu/usr.bin/perl/cpan/File-Temp/t/lock.t +++ b/gnu/usr.bin/perl/cpan/File-Temp/t/lock.t @@ -20,7 +20,7 @@ BEGIN { require Symbol if $] < 5.006; # Get a tempfile with O_EXLOCK -my $fh = new File::Temp(); +my $fh = File::Temp->new(EXLOCK => 1); ok( -e "$fh", "temp file is present" ); # try to open it with a lock diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t b/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t index dc49c8561be..105e495898c 100755 --- a/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t +++ b/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t @@ -16,7 +16,7 @@ ok(1); # MKSTEMP - test # Create file in temp directory -my $template = File::Spec->catfile(File::Spec->tmpdir, 'wowserXXXX'); +my $template = File::Spec->catfile(File::Temp::_wrap_file_spec_tmpdir(), 'wowserXXXX'); (my $fh, $template) = mkstemp($template); @@ -54,7 +54,9 @@ my $status = unlink0($fh, $template); if ($status) { ok( $status ); } else { - skip("Skip test failed probably due to \$TMPDIR being on NFS",1); + SKIP: { + skip("Skip test failed probably due to \$TMPDIR being on NFS",1); + } } # MKSTEMPS @@ -77,13 +79,15 @@ $status = unlink0($fh, $fname); if ($status) { ok($status); } else { - skip("Skip test failed probably due to cwd being on NFS",1) + SKIP: { + skip("Skip test failed probably due to cwd being on NFS",1) + } } # MKDTEMP # Temp directory -$template = File::Spec->catdir(File::Spec->tmpdir, 'tmpdirXXXXXX'); +$template = File::Spec->catdir(File::Temp::_wrap_file_spec_tmpdir(), 'tmpdirXXXXXX'); my $tmpdir = mkdtemp($template); @@ -97,7 +101,7 @@ rmtree($tmpdir); # MKTEMP # Just a filename, not opened -$template = File::Spec->catfile(File::Spec->tmpdir, 'mytestXXXXXX'); +$template = File::Spec->catfile(File::Temp::_wrap_file_spec_tmpdir(), 'mytestXXXXXX'); my $tmpfile = mktemp($template); diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/object.t b/gnu/usr.bin/perl/cpan/File-Temp/t/object.t index 5732bfd0c20..942de192b7c 100755 --- a/gnu/usr.bin/perl/cpan/File-Temp/t/object.t +++ b/gnu/usr.bin/perl/cpan/File-Temp/t/object.t @@ -148,7 +148,7 @@ $fh = new File::Temp( TEMPLATE => 'permXXXXXXX', UNLINK => 1); print "# TEMPFILE: Created $fh\n"; ok( -f "$fh", "File $fh exists?" ); ok( close( $fh ), "Close file $fh" ); -ok( $fh->unlink_on_destroy, "should unlink (in principal)"); +ok( $fh->unlink_on_destroy, "should unlink (in principle)"); push( @still_there, "$fh"); # check at END $File::Temp::KEEP_ALL = 1; diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t b/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t index 07784046adf..07577a94de4 100755 --- a/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t +++ b/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t @@ -34,7 +34,9 @@ my $status = unlink0($fh, $tmpnam); if ($status) { ok( $status ); } else { - skip("Skip test failed probably due to \$TMPDIR being on NFS",1); + SKIP: { + skip("Skip test failed probably due to \$TMPDIR being on NFS",1); + } } # TMPFILE @@ -67,7 +69,9 @@ if (defined $fh) { } else { # Skip all the remaining tests foreach (1..3) { - skip("Skip test failed probably due to \$TMPDIR being on NFS",1); + SKIP: { + skip("Skip test failed probably due to \$TMPDIR being on NFS",1); + } } } diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/security.t b/gnu/usr.bin/perl/cpan/File-Temp/t/security.t index dee3df87815..9f38d80bc22 100755 --- a/gnu/usr.bin/perl/cpan/File-Temp/t/security.t +++ b/gnu/usr.bin/perl/cpan/File-Temp/t/security.t @@ -77,7 +77,7 @@ sub test_security { # Create the tempfile my $template = "tmpXXXXX"; my ($fh1, $fname1) = eval { tempfile ( $template, - DIR => File::Spec->tmpdir, + DIR => File::Temp::_wrap_file_spec_tmpdir(), UNLINK => 1, ); }; @@ -89,7 +89,7 @@ sub test_security { push(@files, $fname1); # store for end block } elsif (File::Temp->safe_level() != File::Temp::STANDARD) { chomp($@); - my $msg = File::Spec->tmpdir() . " possibly insecure: $@"; + my $msg = File::Temp::_wrap_file_spec_tmpdir() . " possibly insecure: $@"; skip $msg, 2; # one here and one in END } else { ok(0); diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t b/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t index 555c53ad697..3cb08d2a648 100755 --- a/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t +++ b/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t @@ -154,7 +154,7 @@ push( @still_there, File::Spec->rel2abs($tempfile) ); # check at END # on NFS # Try to do what we can. # Tempfile croaks on error so we need an eval -$fh = eval { tempfile( 'ftmpXXXXX', DIR => File::Spec->tmpdir ) }; +$fh = eval { tempfile( 'ftmpXXXXX', DIR => File::Temp::_wrap_file_spec_tmpdir() ) }; if ($fh) { @@ -165,8 +165,9 @@ if ($fh) { ok( close($fh), "Close temp file" ); } else { - skip "Skip Failed probably due to NFS", 1; - skip "Skip Failed probably due to NFS", 1; + SKIP: { + skip "Skip Failed probably due to NFS", 2; + } } # Create temp directory and chdir to it; it should still be removed on exit. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/004gziphdr.t b/gnu/usr.bin/perl/cpan/IO-Compress/t/004gziphdr.t index 399fdb70ef9..27a90135465 100755 --- a/gnu/usr.bin/perl/cpan/IO-Compress/t/004gziphdr.t +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/004gziphdr.t @@ -854,8 +854,8 @@ EOM $status = $gunz->read($uncomp) while $status > 0; if ($strict) { - cmp_ok $status, '<', 0 ; - like $GunzipError, "/Trailer Error: trailer truncated. Expected 8 bytes, got $got/"; + cmp_ok $status, '<', 0, "status 0" ; + like $GunzipError, "/Trailer Error: trailer truncated. Expected 8 bytes, got $got/", "got Trailer Error"; } else { diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/105oneshot-zip-only.t b/gnu/usr.bin/perl/cpan/IO-Compress/t/105oneshot-zip-only.t index 4fea3d1a464..94676eb5dd6 100755 --- a/gnu/usr.bin/perl/cpan/IO-Compress/t/105oneshot-zip-only.t +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/105oneshot-zip-only.t @@ -1,7 +1,7 @@ BEGIN { if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = ("../lib", "lib/compress"); + chdir 't' if -d 't'; + @INC = ("../lib", "lib/compress"); } } @@ -24,7 +24,7 @@ BEGIN { $extra = 1 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - plan tests => 216 + $extra ; + plan tests => 219 + $extra ; #use_ok('IO::Compress::Zip', qw(zip $ZipError :zip_method)) ; use_ok('IO::Compress::Zip', qw(:all)) ; @@ -246,5 +246,30 @@ for my $stream (0, 1) } } +{ + title "Regression: ods streaming issue"; + + # The file before meta.xml in test.ods is content.xml. + # Issue was triggered because content.xml was stored + # as streamed and the code to walk the compressed streaming + # content assumed that all of the input buffer was consumed + # in a single call to "uncompr". + + my $files = "./t/" ; + $files = "./" if $ENV{PERL_CORE} ; + $files .= "files/"; + + my $zipfile = "$files/test.ods" ; + my $file = "meta.xml"; + + my $got; + + ok unzip($zipfile => \$got, Name => $file), " unzip $file ok" + or diag $UnzipError ; + + my $meta = readFile("$files/$file"); + is $got, $meta, " content ok"; +} + # TODO add more error cases diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/CompTestUtils.pm b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/CompTestUtils.pm index da238e15d27..c506632f90e 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/CompTestUtils.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/CompTestUtils.pm @@ -395,6 +395,17 @@ my %TOP = ( Raw => 0, }, + 'IO::Compress::Lzip' => { Inverse => 'IO::Uncompress::UnLzip', + Error => 'LzipError', + TopLevel => 'lzip', + Raw => 0, + }, + 'IO::Uncompress::UnLzip' => { Inverse => 'IO::Compress::Lzip', + Error => 'UnLzipError', + TopLevel => 'unlzip', + Raw => 0, + }, + 'IO::Compress::PPMd' => { Inverse => 'IO::Uncompress::UnPPMd', Error => 'PPMdError', TopLevel => 'ppmd', @@ -405,6 +416,16 @@ my %TOP = ( TopLevel => 'unppmd', Raw => 0, }, + 'IO::Compress::Zstd' => { Inverse => 'IO::Uncompress::UnZstd', + Error => 'ZstdError', + TopLevel => 'zstd', + Raw => 0, + }, + 'IO::Uncompress::UnZstd' => { Inverse => 'IO::Compress::Zstd', + Error => 'UnZstdError', + TopLevel => 'unzstd', + Raw => 0, + }, 'IO::Compress::DummyComp' => { Inverse => 'IO::Uncompress::DummyUnComp', Error => 'DummyCompError', @@ -494,7 +515,7 @@ sub compressBuffer our ($AnyUncompressError); BEGIN { - eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); '; + eval ' use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError); '; } sub anyUncompress @@ -555,7 +576,6 @@ sub anyUncompress if $o->error() ; return $out ; - } sub getHeaders @@ -718,7 +738,7 @@ sub getMultiValues { my $class = shift ; - return (0,0) if $class =~ /lzf|lzma/i; + return (0,0) if $class =~ /lzf|lzma|zstd/i; return (1,0); } diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/generic.pl b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/generic.pl index f6e630c7368..d9695e88dce 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/generic.pl +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/generic.pl @@ -18,7 +18,7 @@ BEGIN $extra = 1 if $st ; - plan(tests => 794 + $extra) ; + plan(tests => 799 + $extra) ; } sub myGZreadFile @@ -43,7 +43,7 @@ sub myGZreadFile sub run { my $CompressClass = identify(); - $UncompressClass = getInverse($CompressClass); + $UncompressClass = getInverse($CompressClass); my $Error = getErrorRef($CompressClass); my $UnError = getErrorRef($UncompressClass); @@ -484,10 +484,13 @@ EOM #print "length " . length($x) . " \n"; } + SKIP: { # embed a compressed file in another file #================================ + skip "zstd doesn't support trailing data", 11 + if $CompressClass =~ /zstd/i ; my $lex = new LexFile my $name ; @@ -525,7 +528,7 @@ EOM ok $x->binmode(); 1 while $x->read($uncomp) > 0 ; - ok $uncomp eq $hello ; + is $uncomp, $hello ; my $rest ; read($fh1, $rest, 5000); is $x->trailingData() . $rest, $trailer ; @@ -533,10 +536,13 @@ EOM } + SKIP: { # embed a compressed file in another buffer #================================ + skip "zstd doesn't support trailing data", 6 + if $CompressClass =~ /zstd/i ; my $hello = <<EOM ; hello world @@ -1142,7 +1148,8 @@ EOT my $b ; my $a = new $CompressClass(\$b) ; - ok ! $a->error() ; + ok ! $a->error() + or die $a->error() ; eval { $a->seek(-1, 10) ; }; like $@, mkErr("^${CompressClass}::seek: unknown value, 10, for whence parameter"); @@ -1598,7 +1605,7 @@ EOT $c->close(); my $comp_len = length $compressed; - $compressed .= $appended if $append ; + $compressed .= $appended if $append && $CompressClass !~ /zstd/i; my $lex = new LexFile my $name ; my $input ; @@ -1638,7 +1645,7 @@ EOT } { - # Check that read return an empty string + # Check that read returns an empty string if ($type eq 'filehandle') { my $fh = new IO::File "<$name" ; @@ -1651,7 +1658,8 @@ EOT isa_ok $x, $UncompressClass; my $buffer; - is $x->read($buffer), 0, "read 0 bytes"; + is $x->read($buffer), 0, "read 0 bytes" + or diag "read returned $$UnError"; ok defined $buffer, "buffer is defined"; is $buffer, "", "buffer is empty string"; @@ -1703,6 +1711,37 @@ EOT } } } + + { + # Round trip binary data that happens to contain \r\n + # via the filesystem + + my $original = join '', map { chr } 0x00 .. 0xff ; + $original .= "data1\r\ndata2\r\ndata3\r\n" ; + + + title "$UncompressClass -- round trip test"; + + my $string = $original; + + my $lex = new LexFile( my $name, my $compressed) ; + my $input ; + writeFile ($name, $original); + + my $c = new $CompressClass($compressed); + isa_ok $c, $CompressClass; + $c->print($string); + $c->close(); + + my $u = new $UncompressClass $compressed, Transparent => 0 + or diag "$$UnError" ; + isa_ok $u, $UncompressClass; + my $buffer; + is $u->read($buffer), length($original), "read bytes"; + is $buffer, $original, " round tripped ok"; + + + } } 1; diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/multi.pl b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/multi.pl index c6501f8f743..4d587fbdd4a 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/multi.pl +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/multi.pl @@ -101,8 +101,6 @@ EOM } ok $x->close, " Close ok" ; - #hexDump($compressed) ; - foreach my $unc ($UncompressClass, 'IO::Uncompress::AnyUncompress') { title " Testing $CompressClass with $unc and $i streams, from $fb"; $cc = $output ; diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/truncate.pl b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/truncate.pl index 0bf269a7a6c..24fe176ce8a 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/truncate.pl +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/truncate.pl @@ -114,7 +114,7 @@ sub run #ok $gz->eof() ; } - # Test curruption directly after the header + # Test corruption directly after the header # In this case the uncompression object will have been created, # so need to check that subsequent reads from the object fail if ($header_size > 0) @@ -227,13 +227,15 @@ sub run } ok $gz->error() ; cmp_ok $gz->errorNo(), '<', 0 ; - ok $gz->eof() ; + # ok $gz->eof() + # or die "EOF"; $gz->close(); } } - # RawDeflate does not have a trailer + # RawDeflate and Zstandard do not have a trailer next if $CompressClass eq 'IO::Compress::RawDeflate' ; + next if $CompressClass eq 'IO::Compress::Zstd' ; title "Compressed Trailer Truncation"; foreach my $i (length($compressed) - $trailer_size .. length($compressed) -1 ) diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/files/meta.xml b/gnu/usr.bin/perl/cpan/IO-Compress/t/files/meta.xml new file mode 100644 index 00000000000..437352da627 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/files/meta.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" office:version="1.2"><office:meta><meta:creation-date>2018-12-25T11:36:11.437260543</meta:creation-date><dc:date>2018-12-25T11:36:55.657945697</dc:date><meta:editing-duration>PT54S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="1" meta:cell-count="3" meta:object-count="0"/><meta:generator>LibreOffice/6.0.7.3$Linux_X86_64 LibreOffice_project/00m0$Build-3</meta:generator></office:meta></office:document-meta>
\ No newline at end of file diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/files/test.ods b/gnu/usr.bin/perl/cpan/IO-Compress/t/files/test.ods Binary files differnew file mode 100644 index 00000000000..ecb2a5df9f0 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/files/test.ods diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP/Boolean.pm b/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP/Boolean.pm index 1d1c5c485cc..8b98c95c2f4 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP/Boolean.pm +++ b/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP/Boolean.pm @@ -1,14 +1,16 @@ package JSON::PP::Boolean; use strict; -use overload ( +require overload; +local $^W; +overload::import('overload', "0+" => sub { ${$_[0]} }, "++" => sub { $_[0] = ${$_[0]} + 1 }, "--" => sub { $_[0] = ${$_[0]} - 1 }, fallback => 1, ); -$JSON::PP::Boolean::VERSION = '2.97001'; +$JSON::PP::Boolean::VERSION = '4.02'; 1; @@ -31,5 +33,10 @@ L<JSON::PP> for more info about this class. This idea is from L<JSON::XS::Boolean> written by Marc Lehmann <schmorp[at]schmorp.de> +=head1 LICENSE + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =cut diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/000_load.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/000_load.t index 09e854c1bb8..aa238dcf5d9 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/000_load.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/000_load.t @@ -1,6 +1,7 @@ +# copied over from JSON::XS and modified to use JSON::PP + BEGIN { $| = 1; print "1..1\n"; } END {print "not ok 1\n" unless $loaded;} - BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/001_utf8.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/001_utf8.t index e78fdcb11fb..95dff597c08 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/001_utf8.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/001_utf8.t @@ -6,22 +6,12 @@ BEGIN { plan tests => 9 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } -BEGIN { - use lib qw(t); - use _unicode_handling; -} - - use utf8; use JSON::PP; ok (JSON::PP->new->allow_nonref (1)->utf8 (1)->encode ("ü") eq "\"\xc3\xbc\""); ok (JSON::PP->new->allow_nonref (1)->encode ("ü") eq "\"ü\""); - -SKIP: { - skip "UNICODE handling is disabale.", 7 unless $JSON::PP::can_handle_UTF16_and_utf8; - ok (JSON::PP->new->allow_nonref (1)->ascii (1)->utf8 (1)->encode (chr 0x8000) eq '"\u8000"'); ok (JSON::PP->new->allow_nonref (1)->ascii (1)->utf8 (1)->pretty (1)->encode (chr 0x10402) eq "\"\\ud801\\udc02\"\n"); @@ -33,4 +23,3 @@ ok (JSON::PP->new->allow_nonref (1)->decode ('"\u00fc"') eq "ü"); ok (JSON::PP->new->allow_nonref (1)->decode ('"\ud801\udc02' . "\x{10204}\"") eq "\x{10402}\x{10204}"); ok (JSON::PP->new->allow_nonref (1)->decode ('"\"\n\\\\\r\t\f\b"') eq "\"\012\\\015\011\014\010"); -} diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/002_error.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/002_error.t index 166bafc3677..8d0765d181c 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/002_error.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/002_error.t @@ -2,17 +2,13 @@ use strict; use Test::More; -BEGIN { plan tests => 31 }; +BEGIN { plan tests => 35 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } -BEGIN { - use lib qw(t); - use _unicode_handling; -} - use utf8; use JSON::PP; +no warnings; eval { JSON::PP->new->encode ([\-1]) }; ok $@ =~ /cannot encode reference/; @@ -21,10 +17,12 @@ eval { JSON::PP->new->encode ([\2]) }; ok $@ =~ /cannot encode reference/; eval { JSON::PP->new->encode ([\{}]) }; ok $@ =~ /cannot encode reference/; eval { JSON::PP->new->encode ([\[]]) }; ok $@ =~ /cannot encode reference/; eval { JSON::PP->new->encode ([\\1]) }; ok $@ =~ /cannot encode reference/; + eval { JSON::PP->new->allow_nonref (1)->decode ('"\u1234\udc00"') }; ok $@ =~ /missing high /; eval { JSON::PP->new->allow_nonref->decode ('"\ud800"') }; ok $@ =~ /missing low /; eval { JSON::PP->new->allow_nonref (1)->decode ('"\ud800\u1234"') }; ok $@ =~ /surrogate pair /; -eval { JSON::PP->new->decode ('null') }; ok $@ =~ /allow_nonref/; + +eval { JSON::PP->new->allow_nonref (0)->decode ('null') }; ok $@ =~ /allow_nonref/; eval { JSON::PP->new->allow_nonref (1)->decode ('+0') }; ok $@ =~ /malformed/; eval { JSON::PP->new->allow_nonref->decode ('.2') }; ok $@ =~ /malformed/; eval { JSON::PP->new->allow_nonref (1)->decode ('bare') }; ok $@ =~ /malformed/; @@ -48,4 +46,10 @@ eval { JSON::PP->new->decode (*STDERR) }; ok !!$@; # cannot coerce GLOB eval { decode_json ("\"\xa0") }; ok $@ =~ /malformed.*character/; eval { decode_json ("\"\xa0\"") }; ok $@ =~ /malformed.*character/; +{ #SKIP_UNLESS_XS4_COMPAT 4 +eval { decode_json ("1\x01") }; ok $@ =~ /garbage after/; +eval { decode_json ("1\x00") }; ok $@ =~ /garbage after/; +eval { decode_json ("\"\"\x00") }; ok $@ =~ /garbage after/; +eval { decode_json ("[]\x00") }; ok $@ =~ /garbage after/; +} diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/003_types.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/003_types.t index 22e0f7ec2e0..edf2990c84d 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/003_types.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/003_types.t @@ -1,11 +1,12 @@ # copied over from JSON::XS and modified to use JSON::PP + use strict; use Test::More; - -BEGIN { plan tests => 78 }; +BEGIN { plan tests => 76 + 2 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } +use utf8; use JSON::PP; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/004_dwiw_encode.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/004_dwiw_encode.t new file mode 100644 index 00000000000..a3329470fcb --- /dev/null +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/004_dwiw_encode.t @@ -0,0 +1,71 @@ +# copied over from JSON::XS and modified to use JSON::PP + +# copied over from JSON::DWIW and modified to use JSON::PP + +# Creation date: 2007-02-20 19:51:06 +# Authors: don + +use strict; +use Test; + +# main +{ + BEGIN { plan tests => 5 } + + BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } + +use JSON::PP; + + my $data; + + # my $expected_str = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var3":"val3"}'; + + my $expected_str1 = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}]}'; + my $expected_str2 = '{"var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var1":"val1"}'; + my $expected_str3 = '{"var2":["first_element",{"sub_element2":"sub_val2","sub_element":"sub_val"}],"var1":"val1"}'; + my $expected_str4 = '{"var1":"val1","var2":["first_element",{"sub_element2":"sub_val2","sub_element":"sub_val"}]}'; + + my $json_obj = JSON::PP->new->allow_nonref (1); + my $json_str; + # print STDERR "\n" . $json_str . "\n\n"; + + my $expected_str; + + $data = 'stuff'; + $json_str = $json_obj->encode($data); + ok($json_str eq '"stuff"'); + + $data = "stu\nff"; + $json_str = $json_obj->encode($data); + ok($json_str eq '"stu\nff"'); + + $data = [ 1, 2, 3 ]; + $expected_str = '[1,2,3]'; + $json_str = $json_obj->encode($data); + + ok($json_str eq $expected_str); + + $data = { var1 => 'val1', var2 => 'val2' }; + $json_str = $json_obj->encode($data); + + ok($json_str eq '{"var1":"val1","var2":"val2"}' + or $json_str eq '{"var2":"val2","var1":"val1"}'); + + $data = { var1 => 'val1', + var2 => [ 'first_element', + { sub_element => 'sub_val', sub_element2 => 'sub_val2' }, + ], + # var3 => 'val3', + }; + + $json_str = $json_obj->encode($data); + + ok($json_str eq $expected_str1 or $json_str eq $expected_str2 + or $json_str eq $expected_str3 or $json_str eq $expected_str4); +} + +exit 0; + +############################################################################### +# Subroutines + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/005_dwiw_decode.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/005_dwiw_decode.t new file mode 100644 index 00000000000..9bfe2fd07e6 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/005_dwiw_decode.t @@ -0,0 +1,93 @@ +# copied over from JSON::XS and modified to use JSON::PP + +# copied over from JSON::DWIW and modified to use JSON::PP + +# Creation date: 2007-02-20 21:54:09 +# Authors: don + +use strict; +use warnings; +use Test; + +# main +{ + BEGIN { plan tests => 7 } + + BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } + +use JSON::PP; + + my $json_str = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var3":"val3"}'; + + my $json_obj = JSON::PP->new->allow_nonref(1); + my $data = $json_obj->decode($json_str); + + my $pass = 1; + if ($data->{var1} eq 'val1' and $data->{var3} eq 'val3') { + if ($data->{var2}) { + my $array = $data->{var2}; + if (ref($array) eq 'ARRAY') { + if ($array->[0] eq 'first_element') { + my $hash = $array->[1]; + if (ref($hash) eq 'HASH') { + unless ($hash->{sub_element} eq 'sub_val' + and $hash->{sub_element2} eq 'sub_val2') { + $pass = 0; + } + } + else { + $pass = 0; + } + } + else { + $pass = 0; + } + } + else { + $pass = 0; + } + } + else { + $pass = 0; + } + } + + ok($pass); + + $json_str = '"val1"'; + $data = $json_obj->decode($json_str); + ok($data eq 'val1'); + + $json_str = '567'; + $data = $json_obj->decode($json_str); + ok($data == 567); + + $json_str = "5e1"; + $data = $json_obj->decode($json_str); + ok($data == 50); + + $json_str = "5e3"; + $data = $json_obj->decode($json_str); + ok($data == 5000); + + $json_str = "5e+1"; + $data = $json_obj->decode($json_str); + ok($data == 50); + + $json_str = "5e-1"; + $data = $json_obj->decode($json_str); + ok($data == 0.5); + + + + +# use Data::Dumper; +# print STDERR Dumper($test_data) . "\n\n"; + +} + +exit 0; + +############################################################################### +# Subroutines + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/006_pc_pretty.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/006_pc_pretty.t index 2de5c5d37cb..582f882dd69 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/006_pc_pretty.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/006_pc_pretty.t @@ -56,7 +56,7 @@ is($js,q|{"foo":[{"a":"b"},0,1,2]}|); $obj = {foo => "bar"}; -$pc->indent(3); # original -- $pc->indent(1); +$pc->indent(1); is($pc->encode($obj), qq|{\n "foo":"bar"\n}\n|, "nospace"); $pc->space_after(1); is($pc->encode($obj), qq|{\n "foo": "bar"\n}\n|, "after"); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/007_pc_esc.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/007_pc_esc.t index a5efc8beceb..cbe6cd674f1 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/007_pc_esc.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/007_pc_esc.t @@ -7,18 +7,10 @@ use Test::More; use strict; - -BEGIN { plan tests => 18 }; - +use utf8; +BEGIN { plan tests => 17 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } -BEGIN { - use lib qw(t); - use _unicode_handling; -} - - -use utf8; use JSON::PP; ######################### @@ -72,7 +64,6 @@ $obj = {test => "abc\\def"}; $str = $pc->encode($obj); is($str,q|{"test":"abc\\\\def"}|); - $obj = {test => "ã‚ã„ã†ãˆãŠ"}; $str = $pc->encode($obj); is($str,q|{"test":"ã‚ã„ã†ãˆãŠ"}|); @@ -81,7 +72,6 @@ $obj = {"ã‚ã„ã†ãˆãŠ" => "ã‹ããã‘ã“"}; $str = $pc->encode($obj); is($str,q|{"ã‚ã„ã†ãˆãŠ":"ã‹ããã‘ã“"}|); - $obj = $pc->decode(q|{"id":"abc\ndef"}|); is($obj->{id},"abc\ndef",q|{"id":"abc\ndef"}|); @@ -91,7 +81,3 @@ is($obj->{id},"abc\\ndef",q|{"id":"abc\\\ndef"}|); $obj = $pc->decode(q|{"id":"abc\\\\\ndef"}|); is($obj->{id},"abc\\\ndef",q|{"id":"abc\\\\\ndef"}|); -$obj = {test => "\'I said\', \"She said\""}; -$str = $pc->encode($obj); -is($str,q|{"test":"'I said', \"She said\""}|); - diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/008_pc_base.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/008_pc_base.t index bcc9d8e7bd2..d8dc46d779d 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/008_pc_base.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/008_pc_base.t @@ -5,7 +5,6 @@ use Test::More; use strict; BEGIN { plan tests => 20 }; - BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; @@ -91,7 +90,7 @@ like($@, qr/JSON can only/i, 'invalid value (coderef)'); #$obj = { foo => bless {}, "Hoge" }; #eval q{ $js = $pc->encode($obj) }; -#like($@, qr/JSON::PP can only/i, 'invalid value (blessd object)'); +#like($@, qr/JSON can only/i, 'invalid value (blessd object)'); $obj = { foo => \$js }; eval q{ $js = $pc->encode($obj) }; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/009_pc_extra_number.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/009_pc_extra_number.t index 25497a6ff87..1712064cb8d 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/009_pc_extra_number.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/009_pc_extra_number.t @@ -4,11 +4,10 @@ use Test::More; use strict; BEGIN { plan tests => 6 }; - BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; - +use utf8; ######################### my ($js,$obj); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/010_pc_keysort.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/010_pc_keysort.t index c5e5c099a4a..cec6fe1936c 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/010_pc_keysort.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/010_pc_keysort.t @@ -4,7 +4,6 @@ use Test::More; use strict; BEGIN { plan tests => 1 }; - BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/011_pc_expo.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/011_pc_expo.t index 154a8256ef4..3167ef977c8 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/011_pc_expo.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/011_pc_expo.t @@ -3,8 +3,7 @@ use Test::More; use strict; -BEGIN { plan tests => 8 }; - +BEGIN { plan tests => 8 + 2 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; @@ -31,14 +30,14 @@ $js = q|[1.23E-4]|; $obj = $pc->decode($js); is($obj->[0], 0.000123, 'digit 1.23E-4'); $js = $pc->encode($obj); +is($js,'[0.000123]', 'digit 1.23E-4'); -if ( $js =~ /\[1/ ) { # for 5.6.2 on Darwin 8.10.0 - like($js, qr/[1.23[eE]-04]/, 'digit 1.23E-4'); -} -else { - is($js,'[0.000123]', 'digit 1.23E-4'); -} +$js = q|[1.01e+30]|; +$obj = $pc->decode($js); +is($obj->[0], 1.01e+30, 'digit 1.01e+30'); +$js = $pc->encode($obj); +like($js,qr/\[(?:1.01[Ee]\+0?30|1010000000000000000000000000000)]/, 'digit 1.01e+30'); # RT-128589 (-Duselongdouble or -Dquadmath) my $vax_float = (pack("d",1) =~ /^[\x80\x10]\x40/); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/012_blessed.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/012_blessed.t index 7f0b41025c0..9329eb8b667 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/012_blessed.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/012_blessed.t @@ -25,7 +25,6 @@ ok ($js->encode ($o1) eq "null"); ok ($js->encode ($o2) eq "null"); $js->convert_blessed; ok ($js->encode ($o1) eq '{"__":""}'); - ok ($js->encode ($o2) eq "null"); $js->filter_json_object (sub { 5 }); @@ -48,6 +47,6 @@ ok (9 eq join ":", @{ $js->decode ('[{"a":9}]') }); $js->filter_json_single_key_object ("a"); ok (4 == $js->decode ('[{"a":4}]')->[0]{a}); -#$js->filter_json_single_key_object (a => sub {}); -$js->filter_json_single_key_object (a => sub { return; }); # sub {} is not suitable for Perl 5.6 +$js->filter_json_single_key_object (a => sub { return; }); # sub {} is not suitable for Perl 5.6 ok (4 == $js->decode ('[{"a":4}]')->[0]{a}); + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/013_limit.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/013_limit.t index 47bbff9cc14..178a12618a0 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/013_limit.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/013_limit.t @@ -1,6 +1,7 @@ +# copied over from JSON::XS and modified to use JSON::PP + use strict; use Test::More; - BEGIN { plan tests => 11 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } @@ -11,9 +12,7 @@ use JSON::PP; my $def = 512; my $js = JSON::PP->new; - -{ - local $^W = undef; # avoid for warning 'Deep recursion on subroutin' +local $^W; # to silence Deep recursion warnings ok (!eval { $js->decode (("[" x ($def + 1)) . ("]" x ($def + 1))) }); ok (ref $js->decode (("[" x $def) . ("]" x $def))); @@ -31,4 +30,3 @@ ok (!eval { $js->encode ([[{}]]), 1 }); ok (eval { ref $js->max_size (8)->decode ("[ ]") }); eval { $js->max_size (8)->decode ("[ ]") }; ok ($@ =~ /max_size/); -} diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/014_latin1.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/014_latin1.t index 6c02d627708..30692193f02 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/014_latin1.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/014_latin1.t @@ -1,27 +1,18 @@ # copied over from JSON::XS and modified to use JSON::PP -use Test::More; use strict; +use Test::More; BEGIN { plan tests => 4 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } -BEGIN { - use lib qw(t); - use _unicode_handling; -} - use JSON::PP; -SKIP: { - skip "UNICODE handling is disabale.", 4 unless $JSON::PP::can_handle_UTF16_and_utf8; - -my $xs = JSON::PP->new->latin1->allow_nonref; +my $pp = JSON::PP->new->latin1->allow_nonref; -ok $xs->encode ("\x{12}\x{89} ") eq "\"\\u0012\x{89} \""; -ok $xs->encode ("\x{12}\x{89}\x{abc}") eq "\"\\u0012\x{89}\\u0abc\""; +ok ($pp->encode ("\x{12}\x{89} ") eq "\"\\u0012\x{89} \""); +ok ($pp->encode ("\x{12}\x{89}\x{abc}") eq "\"\\u0012\x{89}\\u0abc\""); -ok $xs->decode ("\"\\u0012\x{89}\"" ) eq "\x{12}\x{89}"; -ok $xs->decode ("\"\\u0012\x{89}\\u0abc\"") eq "\x{12}\x{89}\x{abc}"; +ok ($pp->decode ("\"\\u0012\x{89}\"" ) eq "\x{12}\x{89}"); +ok ($pp->decode ("\"\\u0012\x{89}\\u0abc\"") eq "\x{12}\x{89}\x{abc}"); -} diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/015_prefix.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/015_prefix.t index b6474fede65..d4e8b37859a 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/015_prefix.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/015_prefix.t @@ -1,16 +1,19 @@ # copied over from JSON::XS and modified to use JSON::PP -BEGIN { $| = 1; print "1..4\n"; } +use strict; +use Test::More; +BEGIN { plan tests => 4 }; + BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; -my $xs = JSON::PP->new->allow_nonref; +my $pp = JSON::PP->new->latin1->allow_nonref; -eval { $xs->decode ("[] ") }; -print $@ ? "not " : "", "ok 1\n"; -eval { $xs->decode ("[] x") }; -print $@ ? "" : "not ", "ok 2\n"; -print 2 == ($xs->decode_prefix ("[][]"))[1] ? "" : "not ", "ok 3\n"; -print 3 == ($xs->decode_prefix ("[1] t"))[1] ? "" : "not ", "ok 4\n"; +eval { $pp->decode ("[] ") }; +ok (!$@); +eval { $pp->decode ("[] x") }; +ok ($@); +ok (2 == ($pp->decode_prefix ("[][]"))[1]); +ok (3 == ($pp->decode_prefix ("[1] t"))[1]); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/016_tied.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/016_tied.t index 96035fea6c0..63d912e6625 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/016_tied.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/016_tied.t @@ -10,6 +10,7 @@ use JSON::PP; use Tie::Hash; use Tie::Array; + my $js = JSON::PP->new; tie my %h, 'Tie::StdHash'; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/017_relaxed.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/017_relaxed.t index 243f9973e45..34fb60ead58 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/017_relaxed.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/017_relaxed.t @@ -1,17 +1,11 @@ # copied over from JSON::XS and modified to use JSON::PP -use Test::More; use strict; - +use Test::More; BEGIN { plan tests => 8 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } -BEGIN { - use lib qw(t); - use _unicode_handling; -} - use utf8; use JSON::PP; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/018_json_checker.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/018_json_checker.t index 1e84987e6e6..558861e04bb 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/018_json_checker.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/018_json_checker.t @@ -1,25 +1,25 @@ +# copied over from JSON::XS and modified to use JSON::PP + # use the testsuite from http://www.json.org/JSON_checker/ # except for fail18.json, as we do not support a depth of 20 (but 16 and 32). -# copied over from JSON::XS and modified to use JSON::PP - use strict; -#no warnings; -local $^W = undef; +no warnings; use Test::More; -BEGIN { plan tests => 39 }; +BEGIN { plan tests => 38 }; + BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; +# emulate JSON_checker default config my $json = JSON::PP->new->utf8->max_depth(32)->canonical; my $vax_float = (pack("d",1) =~ /^[\x80\x10]\x40/); binmode DATA; -my $num = 1; -for (;;) { +for (;;) { $/ = "\n# "; chomp (my $test = <DATA>) or last; @@ -28,19 +28,16 @@ for (;;) { if ($vax_float && $name =~ /pass1.json/) { $test =~ s/\b23456789012E66\b/23456789012E20/; } + if (my $perl = eval { $json->decode ($test) }) { ok ($name =~ /^pass/, $name); -#print $json->encode ($perl), "\n"; is ($json->encode ($json->decode ($json->encode ($perl))), $json->encode ($perl)); } else { ok ($name =~ /^fail/, "$name ($@)"); } - } __DATA__ -"A JSON::PP payload should be an object or array, not a string." -# fail1.json {"Extra value after close": true} "misplaced quoted value" # fail10.json {"Illegal expression": 1 + 2} @@ -108,7 +105,7 @@ break"] {"Extra comma": true,} # fail9.json [ - "JSON::PP Test Pattern pass1", + "JSON Test Pattern pass1", {"object with 1 member":["array with 1 element"]}, {}, [], @@ -141,7 +138,7 @@ break"] "array":[ ], "object":{ }, "address": "50 St. James Street", - "url": "http://www.JSON::PP.org/", + "url": "http://www.JSON.org/", "comment": "// /* <!-- --", "# -- --> */": " ", " s p a c e d " :[1,2 , 3 @@ -169,7 +166,7 @@ break"] [[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] # pass2.json { - "JSON::PP Test Pattern pass3": { + "JSON Test Pattern pass3": { "The outermost value": "must be an object or array.", "In this test": "It is an object." } diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t index 9d4710bbd94..4e339823d1b 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t @@ -1,22 +1,19 @@ # copied over from JSON::XS and modified to use JSON::PP use strict; - +no warnings; use Test::More; -BEGIN { plan tests => 697 }; -BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } +BEGIN { plan tests => 745 }; +BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; -if ( $] >= 5.006 ) { - -eval <<'TEST' or die "Failed to eval test code for version $]: $@"; - sub splitter { my ($coder, $text) = @_; - $coder->canonical(1) if $] >= 5.017009; + # work around hash randomisation bug introduced in 5.18 + $coder->canonical; for (0 .. length $text) { my $a = substr $text, 0, $_; @@ -26,20 +23,25 @@ sub splitter { $coder->incr_parse ($b); my $data = $coder->incr_parse; - ok ($data); - is ($coder->encode ($data), $coder->encode ($coder->decode ($text)), "data"); + #ok (defined $data, "split<$a><$b>"); + ok (defined $data, "split"); + my $e1 = $coder->encode ($data); + my $e2 = $coder->encode ($coder->decode ($text)); + #ok ($e1 eq $e2, "data<$a><$b><$e1><$e2>"); + #ok ($coder->incr_text =~ /^\s*$/, "tailws<$a><$b>"); + ok ($e1 eq $e2, "data"); ok ($coder->incr_text =~ /^\s*$/, "tailws"); } } - - -splitter +JSON::PP->new , ' ["x\\"","\\u1000\\\\n\\nx",1,{"\\\\" :5 , "": "x"}]'; -splitter +JSON::PP->new , '[ "x\\"","\\u1000\\\\n\\nx" , 1,{"\\\\ " :5 , "": " x"} ] '; -splitter +JSON::PP->new->allow_nonref, '"test"'; -splitter +JSON::PP->new->allow_nonref, ' "5" '; - - +splitter +JSON::PP->new->allow_nonref (0), ' ["x\\"","\\u1000\\\\n\\nx",1,{"\\\\" :5 , "": "x"}]'; +splitter +JSON::PP->new->allow_nonref (0), '[ "x\\"","\\u1000\\\\n\\nx" , 1,{"\\\\ " :5 , "": " x"} ] '; +splitter +JSON::PP->new , '"test"'; +splitter +JSON::PP->new , ' "5" '; +splitter +JSON::PP->new , '-1e5'; +{ #SKIP_UNLESS_PP 3, 33 +splitter +JSON::PP->new , ' 0.00E+00 '; +} { my $text = '[5],{"":1} , [ 1,2, 3], {"3":null}'; @@ -75,107 +77,32 @@ splitter +JSON::PP->new->allow_nonref, ' "5" '; ok ('[5]' eq $coder->encode (scalar $coder->incr_parse), "sparse3"); } -1 -TEST - - -} -else { - - -eval <<'TEST' or die "Failed to eval test code for version $]: $@"; - -my $incr_text; - -sub splitter { - my ($coder, $text) = @_; - - for (0 .. length $text) { - my $a = substr $text, 0, $_; - my $b = substr $text, $_; - - $coder->incr_parse ($a); - $coder->incr_parse ($b); - - my $data = $coder->incr_parse; - ok ($data); - ok ($coder->encode ($data) eq $coder->encode ($coder->decode ($text)), "data"); - ok (($incr_text = $coder->incr_text) =~ /^\s*$/, "tailws"); - } -} - -splitter +JSON::PP->new , ' ["x\\"","\\u1000\\\\n\\nx",1,{"\\\\" :5 , "": "x"}]'; -splitter +JSON::PP->new , '[ "x\\"","\\u1000\\\\n\\nx" , 1,{"\\\\ " :5 , "": " x"} ] '; -splitter +JSON::PP->new->allow_nonref, '"test"'; -splitter +JSON::PP->new->allow_nonref, ' "5" '; - - -{ - my $text = '[5],{"":1} , [ 1,2, 3], {"3":null}'; - my $coder = new JSON::PP; - for (0 .. length $text) { - my $a = substr $text, 0, $_; - my $b = substr $text, $_; - - $coder->incr_parse ($a); - $coder->incr_parse ($b); - - my $j1 = $coder->incr_parse; ok ( $coder->incr_text( ($incr_text = $coder->incr_text) =~ s/^\s*,// and $incr_text ), "cskip1"); - my $j2 = $coder->incr_parse; ok ( $coder->incr_text( ($incr_text = $coder->incr_text) =~ s/^\s*,// and $incr_text ), "cskip2"); - my $j3 = $coder->incr_parse; ok ( $coder->incr_text( ($incr_text = $coder->incr_text) =~ s/^\s*,// and $incr_text ), "cskip3"); - my $j4 = $coder->incr_parse; ok (($incr_text = $coder->incr_text) !~ s/^\s*,//, "cskip4"); - my $j5 = $coder->incr_parse; ok (($incr_text = $coder->incr_text) !~ s/^\s*,//, "cskip5"); - - ok ('[5]' eq encode_json $j1, "cjson1"); - ok ('{"":1}' eq encode_json $j2, "cjson2"); - ok ('[1,2,3]' eq encode_json $j3, "cjson3"); - ok ('{"3":null}' eq encode_json $j4, "cjson4"); - ok (!defined $j5, "cjson5"); - } -} - -{ - my $text = '[x][5]'; - my $coder = new JSON::PP; - $coder->incr_parse ($text); - ok (!eval { $coder->incr_parse }, "sparse1"); - ok (!eval { $coder->incr_parse }, "sparse2"); - $coder->incr_skip; - ok ('[5]' eq $coder->encode (scalar $coder->incr_parse), "sparse3"); -} - - -TEST - -} # for 5.005 - - - - { my $coder = JSON::PP->new->max_size (5); ok (!$coder->incr_parse ("[ "), "incsize1"); - eval q{ !$coder->incr_parse ("] ") }; ok ($@ =~ /6 bytes/, "incsize2 $@"); + eval { !$coder->incr_parse ("] ") }; ok ($@ =~ /6 bytes/, "incsize2 $@"); } { my $coder = JSON::PP->new->max_depth (3); ok (!$coder->incr_parse ("[[["), "incdepth1"); - eval q{ !$coder->incr_parse (" [] ") }; ok ($@ =~ /maximum nesting/, "incdepth2 $@"); + eval { !$coder->incr_parse (" [] ") }; ok ($@ =~ /maximum nesting/, "incdepth2 $@"); } +# contributed by yuval kogman, reformatted to fit style { my $coder = JSON::PP->new; - + my $res = eval { $coder->incr_parse("]") }; my $e = $@; # test more clobbers $@, we need it twice - - ok(!$res, "unbalanced bracket" ); - ok($e, "got error"); - like( $e, qr/malformed/, "malformed json string error" ); - + + ok (!$res, "unbalanced bracket"); + ok ($e, "got error"); + like ($e, qr/malformed/, "malformed json string error"); + $coder->incr_skip; - - is_deeply(eval { $coder->incr_parse("[42]") }, [42], "valid data after incr_skip"); + + is_deeply (eval { $coder->incr_parse("[42]") }, [42], "valid data after incr_skip"); } + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/020_faihu.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/020_faihu.t new file mode 100644 index 00000000000..3aa2902a9c9 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/020_faihu.t @@ -0,0 +1,32 @@ +# copied over from JSON::XS and modified to use JSON::PP + +# adapted from a test by Aristotle Pagaltzis (http://intertwingly.net/blog/2007/11/15/Astral-Plane-Characters-in-Json) + +use strict; +use warnings; + +BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } + +BEGIN { if ($] < 5.008) { require Test::More; Test::More::plan(skip_all => "requires Perl 5.8 or later"); } }; + +use JSON::PP; +use Encode qw(encode decode); + +use Test::More tests => 3; + +my ($faihu, $faihu_json, $roundtrip, $js) = "\x{10346}"; + +$js = JSON::PP->new->allow_nonref->ascii; +$faihu_json = $js->encode($faihu); +$roundtrip = $js->decode($faihu_json); +is ($roundtrip, $faihu, 'JSON in ASCII roundtrips correctly'); + +$js = JSON::PP->new->allow_nonref->utf8; +$faihu_json = $js->encode ($faihu); +$roundtrip = $js->decode ($faihu_json); +is ($roundtrip, $faihu, 'JSON in UTF-8 roundtrips correctly'); + +$js = JSON::PP->new->allow_nonref; +$faihu_json = encode 'UTF-16BE', $js->encode ($faihu); +$roundtrip = $js->decode( decode 'UTF-16BE', $faihu_json); +is ($roundtrip, $faihu, 'JSON with external recoding roundtrips correctly' ); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/021_evans.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/021_evans.t new file mode 100644 index 00000000000..655f6fc2fed --- /dev/null +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/021_evans.t @@ -0,0 +1,25 @@ +# copied over from JSON::XS and modified to use JSON::PP + +# adapted from a test by Martin Evans + +use strict; +use warnings; + +BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } + +use JSON::PP; + +print "1..1\n"; + +my $data = ["\x{53f0}\x{6240}\x{306e}\x{6d41}\x{3057}", + "\x{6c60}\x{306e}\x{30ab}\x{30a8}\x{30eb}"]; +my $js = JSON::PP->new->encode ($data); +my $j = new JSON::PP; +my $object = $j->incr_parse ($js); + +die "no object" if !$object; + +eval { $j->incr_text }; + +print $@ ? "not " : "", "ok 1 # $@\n"; + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/022_comment_at_eof.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/022_comment_at_eof.t index b235b1f2f90..5cb7f21e257 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/022_comment_at_eof.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/022_comment_at_eof.t @@ -1,6 +1,9 @@ -# the oritinal test case was provided by IKEGAMI@cpan.org +# copied over from JSON::XS and modified to use JSON::PP + +# the original test case was provided by IKEGAMI@cpan.org use strict; +use warnings; use Test::More tests => 13; @@ -29,7 +32,6 @@ sub decoder { return Dumper($rv); } - is( decoder( "[]" ), '[]', 'array baseline' ); is( decoder( " []" ), '[]', 'space ignored before array' ); is( decoder( "\n[]" ), '[]', 'newline ignored before array' ); @@ -44,4 +46,5 @@ is( decoder( "\n" ), 'undef', 'newline ignored before eof' ); is( decoder( "#,foo\n" ), 'undef', 'comment ignored before eof' ); is( decoder( "# []o\n" ), 'undef', 'comment ignored before eof' ); -is( decoder( qq/#\n[#foo\n"#\\n"#\n]/), '["#\n"]', 'array and string in multiple lines' ); +is( decoder(qq/#\n[#foo\n"#\\n"#\n]/), '["#\n"]', 'array and string in multiple lines' ); + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/052_object.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/052_object.t new file mode 100644 index 00000000000..020db32cbb6 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/052_object.t @@ -0,0 +1,58 @@ +# copied over from JSON::XS and modified to use JSON::PP + +use strict; +use Test::More; +BEGIN { plan tests => 20 }; +BEGIN { $^W = 0 } # hate + +BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } + +use JSON::PP; + +my $json = JSON::PP->new->convert_blessed->allow_tags->allow_nonref; + +ok (1); + +sub JSON::PP::tojson::TO_JSON { + ok (@_ == 1); + ok (JSON::PP::tojson:: eq ref $_[0]); + ok ($_[0]{k} == 1); + 7 +} + +my $obj = bless { k => 1 }, JSON::PP::tojson::; + +ok (1); + +my $enc = $json->encode ($obj); +ok ($enc eq 7); + +ok (1); + +sub JSON::PP::freeze::FREEZE { + ok (@_ == 2); + ok ($_[1] eq "JSON"); + ok (JSON::PP::freeze:: eq ref $_[0]); + ok ($_[0]{k} == 1); + (3, 1, 2) +} + +sub JSON::PP::freeze::THAW { + ok (@_ == 5); + ok (JSON::PP::freeze:: eq $_[0]); + ok ($_[1] eq "JSON"); + ok ($_[2] == 3); + ok ($_[3] == 1); + ok ($_[4] == 2); + 777 +} + +my $obj = bless { k => 1 }, JSON::PP::freeze::; +my $enc = $json->encode ($obj); +ok ($enc eq '("JSON::PP::freeze")[3,1,2]'); + +my $dec = $json->decode ($enc); +ok ($dec eq 777); + +ok (1); + diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/099_binary.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/099_binary.t index e924305e03d..2daa5b64693 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/099_binary.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/099_binary.t @@ -1,53 +1,44 @@ # copied over from JSON::XS and modified to use JSON::PP -use Test::More; use strict; -BEGIN { plan tests => 2432 }; +use Test::More; +BEGIN { plan tests => 24576 }; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } -BEGIN { - use lib qw(t); - use _unicode_handling; -} - use JSON::PP; -SKIP: { - skip "UNICODE handling is disabale.", 2432 unless $JSON::PP::can_handle_UTF16_and_utf8; sub test($) { my $js; $js = JSON::PP->new->allow_nonref(0)->utf8->ascii->shrink->encode ([$_[0]]); - ok ($_[0] eq ((decode_json $js)->[0])); + ok ($_[0] eq ((decode_json $js)->[0]), " - 0"); $js = JSON::PP->new->allow_nonref(0)->utf8->ascii->encode ([$_[0]]); - ok ($_[0] eq (JSON::PP->new->utf8->shrink->decode($js))->[0]); + ok ($_[0] eq (JSON::PP->new->utf8->shrink->decode($js))->[0], " - 1"); $js = JSON::PP->new->allow_nonref(0)->utf8->shrink->encode ([$_[0]]); - ok ($_[0] eq ((decode_json $js)->[0])); + ok ($_[0] eq ((decode_json $js)->[0]), " - 2"); $js = JSON::PP->new->allow_nonref(1)->utf8->encode ([$_[0]]); - ok ($_[0] eq (JSON::PP->new->utf8->shrink->decode($js))->[0]); + ok ($_[0] eq (JSON::PP->new->utf8->shrink->decode($js))->[0], " - 3"); $js = JSON::PP->new->allow_nonref(1)->ascii->encode ([$_[0]]); - ok ($_[0] eq JSON::PP->new->decode ($js)->[0]); + ok ($_[0] eq JSON::PP->new->decode ($js)->[0], " - 4"); $js = JSON::PP->new->allow_nonref(0)->ascii->encode ([$_[0]]); - ok ($_[0] eq JSON::PP->new->shrink->decode ($js)->[0]); + ok ($_[0] eq JSON::PP->new->shrink->decode ($js)->[0], " - 5"); $js = JSON::PP->new->allow_nonref(1)->shrink->encode ([$_[0]]); - ok ($_[0] eq JSON::PP->new->decode ($js)->[0]); + ok ($_[0] eq JSON::PP->new->decode ($js)->[0], " - 6"); $js = JSON::PP->new->allow_nonref(0)->encode ([$_[0]]); - ok ($_[0] eq JSON::PP->new->shrink->decode ($js)->[0]); + ok ($_[0] eq JSON::PP->new->shrink->decode ($js)->[0], " - 7"); } srand 0; # doesn't help too much, but its at least more deterministic -#for (1..768) { -for (1..64, 125..129, 255..257, 512, 704, 736, 768) { +for (1..768) { test join "", map chr ($_ & 255), 0..$_; test join "", map chr rand 255, 0..$_; test join "", map chr ($_ * 97 & ~0x4000), 0..$_; test join "", map chr (rand (2**20) & ~0x800), 0..$_; } -} diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/108_decode.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/108_decode.t index ae645e99a7c..438aeeed32b 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/108_decode.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/108_decode.t @@ -10,11 +10,6 @@ BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; -BEGIN { - use lib qw(t); - use _unicode_handling; -} - no utf8; my $json = JSON::PP->new->allow_nonref; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/109_encode.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/109_encode.t index 7526315a728..ce7f5104bcf 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/109_encode.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/109_encode.t @@ -10,11 +10,6 @@ BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; -BEGIN { - use lib qw(t); - use _unicode_handling; -} - no utf8; my $json = JSON::PP->new->allow_nonref; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/112_upgrade.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/112_upgrade.t index 1b06dd38d58..1e319dc56c1 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/112_upgrade.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/112_upgrade.t @@ -7,11 +7,6 @@ BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } use JSON::PP; -BEGIN { - use lib qw(t); - use _unicode_handling; -} - my $json = JSON::PP->new->allow_nonref->utf8; my $str = '\\u00c8'; @@ -22,10 +17,7 @@ my $value = $json->decode( '"\\u00c8"' ); is( $value, chr 0xc8 ); -SKIP: { - skip "UNICODE handling is disabale.", 1 unless $JSON::PP::can_handle_UTF16_and_utf8; - ok( utf8::is_utf8( $value ) ); -} +ok( utf8::is_utf8( $value ) ); eval { $json->decode( '"' . chr(0xc8) . '"' ) }; ok( $@ =~ /malformed UTF-8 character in JSON string/ ); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/114_decode_prefix.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/114_decode_prefix.t index 915ea1532e7..10048d3accf 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/114_decode_prefix.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/114_decode_prefix.t @@ -20,8 +20,8 @@ is( ( $json->decode_prefix( $garbaged_text2 ) ) [1], 13 ); is( ( $json->decode_prefix( $garbaged_text3 ) ) [1], 13 ); eval { $json->decode( "\n" ) }; ok( $@ =~ /malformed JSON/ ); -eval { $json->decode('null') }; ok $@ =~ /allow_nonref/; +eval { $json->allow_nonref(0)->decode('null') }; ok $@ =~ /allow_nonref/; eval { $json->decode_prefix( "\n" ) }; ok( $@ =~ /malformed JSON/ ); -eval { $json->decode_prefix('null') }; ok $@ =~ /allow_nonref/; +eval { $json->allow_nonref(0)->decode_prefix('null') }; ok $@ =~ /allow_nonref/; diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/116_incr_parse_fixed.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/116_incr_parse_fixed.t index 36e84de7fab..c00f023e21a 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/116_incr_parse_fixed.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/116_incr_parse_fixed.t @@ -3,7 +3,7 @@ use Test::More tests => 4; use JSON::PP; -my $json = JSON::PP->new->allow_nonref(); +my $json = JSON::PP->new->allow_nonref(1); my @vs = $json->incr_parse('"a\"bc'); @@ -14,7 +14,7 @@ ok( not scalar(@vs) ); is( $vs[0], "a\"bc" ); -$json = JSON::PP->new; +$json = JSON::PP->new->allow_nonref(0); @vs = $json->incr_parse('"a\"bc'); ok( not scalar(@vs) ); diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/117_numbers.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/117_numbers.t index 73b2a6c826c..a9d3df810d9 100644 --- a/gnu/usr.bin/perl/cpan/JSON-PP/t/117_numbers.t +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/117_numbers.t @@ -1,6 +1,7 @@ use Test::More; use strict; BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } +BEGIN { $ENV{PERL_JSON_PP_USE_B} = 0 } use JSON::PP; #SKIP_ALL_UNLESS_PP 2.90 diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/118_boolean_values.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/118_boolean_values.t new file mode 100644 index 00000000000..1a5d175254c --- /dev/null +++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/118_boolean_values.t @@ -0,0 +1,80 @@ +use strict; +use Test::More; +BEGIN { $ENV{PERL_JSON_BACKEND} = 0; } +use JSON::PP; + +BEGIN { plan skip_all => "requires Perl 5.008 or later" if $] < 5.008 } + +#SKIP_ALL_UNLESS_XS4_COMPAT + +package # + Dummy::True; +*Dummy::True:: = *JSON::PP::Boolean::; + +package # + Dummy::False; +*Dummy::False:: = *JSON::PP::Boolean::; + +package main; + +my $dummy_true = bless \(my $dt = 1), 'Dummy::True'; +my $dummy_false = bless \(my $df = 0), 'Dummy::False'; + +my @tests = ([$dummy_true, $dummy_false, 'Dummy::True', 'Dummy::False']); + +# extra boolean classes +if (eval "require boolean; 1") { + push @tests, [boolean::true(), boolean::false(), 'boolean', 'boolean', 1]; +} +if (eval "require JSON::PP; 1") { + push @tests, [JSON::PP::true(), JSON::PP::false(), 'JSON::PP::Boolean', 'JSON::PP::Boolean']; +} +if (eval "require Data::Bool; 1") { + push @tests, [Data::Bool::true(), Data::Bool::false(), 'Data::Bool::Impl', 'Data::Bool::Impl']; +} +if (eval "require Types::Serialiser; 1") { + push @tests, [Types::Serialiser::true(), Types::Serialiser::false(), 'Types::Serialiser::BooleanBase', 'Types::Serialiser::BooleanBase']; +} + +plan tests => 13 * @tests; + +my $json = JSON::PP->new; +for my $test (@tests) { + my ($true, $false, $true_class, $false_class, $incompat) = @$test; + + $json->boolean_values($false, $true); + my ($new_false, $new_true) = $json->get_boolean_values; + ok defined $new_true, "new true class is defined"; + ok defined $new_false, "new false class is defined"; + ok $new_true->isa($true_class), "new true class is $true_class"; + ok $new_false->isa($false_class), "new false class is $false_class"; + SKIP: { + skip "$true_class is not compatible with JSON::PP::Boolean", 2 if $incompat; + ok $new_true->isa('JSON::PP::Boolean'), "new true class is also JSON::PP::Boolean"; + ok $new_false->isa('JSON::PP::Boolean'), "new false class is also JSON::PP::Boolean"; + } + + my $should_true = $json->allow_nonref(1)->decode('true'); + ok $should_true->isa($true_class), "JSON true turns into a $true_class object"; + + my $should_false = $json->allow_nonref(1)->decode('false'); + ok $should_false->isa($false_class), "JSON false turns into a $false_class object"; + + SKIP: { + skip "$true_class is not compatible with JSON::PP::Boolean", 2 if $incompat; + my $should_true_json = eval { $json->allow_nonref(1)->encode($new_true); }; + is $should_true_json => 'true', "A $true_class object turns into JSON true"; + + my $should_false_json = eval { $json->allow_nonref(1)->encode($new_false); }; + is $should_false_json => 'false', "A $false_class object turns into JSON false"; + } + + $json->boolean_values(); + ok !$json->get_boolean_values, "reset boolean values"; + + $should_true = $json->allow_nonref(1)->decode('true'); + ok $should_true->isa('JSON::PP::Boolean'), "JSON true turns into a JSON::PP::Boolean object"; + + $should_false = $json->allow_nonref(1)->decode('false'); + ok $should_false->isa('JSON::PP::Boolean'), "JSON false turns into a JSON::PP::Boolean object"; +} diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/biglog.t b/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/biglog.t index 6c227e8e8ae..7befc87c3df 100644 --- a/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/biglog.t +++ b/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/biglog.t @@ -4,7 +4,7 @@ # It is too slow to be simple included in bigfltpm.inc, where it would get # executed 3 times. One time would be under Math::BigInt::BareCalc, which -# shouldn't make any difference since there is no CALC->_log() function, and +# shouldn't make any difference since there is no $LIB->_log() function, and # one time under a subclass, which *should* work. # But it is better to test the numerical functionality, instead of not testing diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/bigroot.t b/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/bigroot.t index c14bca1e2a1..076f02e7cb2 100644 --- a/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/bigroot.t +++ b/gnu/usr.bin/perl/cpan/Math-BigInt-FastCalc/t/bigroot.t @@ -11,7 +11,7 @@ use strict; # restrict unsafe constructs use warnings; # enable optional warnings -use Test::More tests => 4 * 2; +use Test::More tests => 16; use Math::BigFloat only => 'FastCalc'; use Math::BigInt; @@ -22,15 +22,14 @@ my $mbi = "Math::BigInt"; # 2 ** 240 = # 1766847064778384329583297500742918515827483896875618958121606201292619776 -# takes way too long -#test_broot('2', '240', 8, undef, -# '1073741824'); -#test_broot('2', '240', 9, undef, -# '106528681.3099908308759836475139583940127'); -#test_broot('2', '120', 9, undef, -# '10321.27324073880096577298929482324664787'); -#test_broot('2', '120', 17, undef, -# '133.3268493632747279600707813049418888729'); +test_broot('2', '240', 8, undef, + '1073741824'); +test_broot('2', '240', 9, undef, + '106528681.3099908308759836475139583940127'); +test_broot('2', '120', 9, undef, + '10321.27324073880096577298929482324664787'); +test_broot('2', '120', 17, undef, + '133.3268493632747279600707813049418888729'); test_broot('2', '120', 8, undef, '32768'); @@ -47,6 +46,10 @@ sub test_broot { my $s = $scale || 'undef'; is($mbf->new($x)->bpow($n)->broot($y, $scale), $expected, "Try: $mbf->new($x)->bpow($n)->broot($y, $s) == $expected"); + + # Math::BigInt returns the truncated integer part of the output, so remove + # the dot an anything after it before comparing. + $expected =~ s/\..*//; is($mbi->new($x)->bpow($n)->broot($y, $scale), $expected, "Try: $mbi->new($x)->bpow($n)->broot($y, $s) == $expected"); diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/lib/Math/BigInt/Lib.pm b/gnu/usr.bin/perl/cpan/Math-BigInt/lib/Math/BigInt/Lib.pm index 23a44aa9559..883f31f4c93 100644 --- a/gnu/usr.bin/perl/cpan/Math-BigInt/lib/Math/BigInt/Lib.pm +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/lib/Math/BigInt/Lib.pm @@ -4,7 +4,7 @@ use 5.006001; use strict; use warnings; -our $VERSION = '1.999811'; +our $VERSION = '1.999816'; use Carp; @@ -1076,6 +1076,261 @@ sub _or { return $z; } +sub _sand { + my ($class, $x, $sx, $y, $sy) = @_; + + return ($class -> _zero(), '+') + if $class -> _is_zero($x) || $class -> _is_zero($y); + + my $sign = $sx eq '-' && $sy eq '-' ? '-' : '+'; + + my ($bx, $by); + + if ($sx eq '-') { # if x is negative + # two's complement: inc (dec unsigned value) and flip all "bits" in $bx + $bx = $class -> _copy($x); + $bx = $class -> _dec($bx); + $bx = $class -> _as_hex($bx); + $bx =~ s/^-?0x//; + $bx =~ tr<0123456789abcdef> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } else { # if x is positive + $bx = $class -> _as_hex($x); # get binary representation + $bx =~ s/^-?0x//; + $bx =~ tr<fedcba9876543210> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } + + if ($sy eq '-') { # if y is negative + # two's complement: inc (dec unsigned value) and flip all "bits" in $by + $by = $class -> _copy($y); + $by = $class -> _dec($by); + $by = $class -> _as_hex($by); + $by =~ s/^-?0x//; + $by =~ tr<0123456789abcdef> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } else { + $by = $class -> _as_hex($y); # get binary representation + $by =~ s/^-?0x//; + $by =~ tr<fedcba9876543210> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } + + # now we have bit-strings from X and Y, reverse them for padding + $bx = reverse $bx; + $by = reverse $by; + + # padd the shorter string + my $xx = "\x00"; $xx = "\x0f" if $sx eq '-'; + my $yy = "\x00"; $yy = "\x0f" if $sy eq '-'; + my $diff = CORE::length($bx) - CORE::length($by); + if ($diff > 0) { + # if $yy eq "\x00", we can cut $bx, otherwise we need to padd $by + $by .= $yy x $diff; + } elsif ($diff < 0) { + # if $xx eq "\x00", we can cut $by, otherwise we need to padd $bx + $bx .= $xx x abs($diff); + } + + # and the strings together + my $r = $bx & $by; + + # and reverse the result again + $bx = reverse $r; + + # One of $bx or $by was negative, so need to flip bits in the result. In both + # cases (one or two of them negative, or both positive) we need to get the + # characters back. + if ($sign eq '-') { + $bx =~ tr<\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00> + <0123456789abcdef>; + } else { + $bx =~ tr<\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00> + <fedcba9876543210>; + } + + # leading zeros will be stripped by _from_hex() + $bx = '0x' . $bx; + $bx = $class -> _from_hex($bx); + + $bx = $class -> _inc($bx) if $sign eq '-'; + + # avoid negative zero + $sign = '+' if $class -> _is_zero($bx); + + return $bx, $sign; +} + +sub _sxor { + my ($class, $x, $sx, $y, $sy) = @_; + + return ($class -> _zero(), '+') + if $class -> _is_zero($x) && $class -> _is_zero($y); + + my $sign = $sx ne $sy ? '-' : '+'; + + my ($bx, $by); + + if ($sx eq '-') { # if x is negative + # two's complement: inc (dec unsigned value) and flip all "bits" in $bx + $bx = $class -> _copy($x); + $bx = $class -> _dec($bx); + $bx = $class -> _as_hex($bx); + $bx =~ s/^-?0x//; + $bx =~ tr<0123456789abcdef> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } else { # if x is positive + $bx = $class -> _as_hex($x); # get binary representation + $bx =~ s/^-?0x//; + $bx =~ tr<fedcba9876543210> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } + + if ($sy eq '-') { # if y is negative + # two's complement: inc (dec unsigned value) and flip all "bits" in $by + $by = $class -> _copy($y); + $by = $class -> _dec($by); + $by = $class -> _as_hex($by); + $by =~ s/^-?0x//; + $by =~ tr<0123456789abcdef> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } else { + $by = $class -> _as_hex($y); # get binary representation + $by =~ s/^-?0x//; + $by =~ tr<fedcba9876543210> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } + + # now we have bit-strings from X and Y, reverse them for padding + $bx = reverse $bx; + $by = reverse $by; + + # padd the shorter string + my $xx = "\x00"; $xx = "\x0f" if $sx eq '-'; + my $yy = "\x00"; $yy = "\x0f" if $sy eq '-'; + my $diff = CORE::length($bx) - CORE::length($by); + if ($diff > 0) { + # if $yy eq "\x00", we can cut $bx, otherwise we need to padd $by + $by .= $yy x $diff; + } elsif ($diff < 0) { + # if $xx eq "\x00", we can cut $by, otherwise we need to padd $bx + $bx .= $xx x abs($diff); + } + + # xor the strings together + my $r = $bx ^ $by; + + # and reverse the result again + $bx = reverse $r; + + # One of $bx or $by was negative, so need to flip bits in the result. In both + # cases (one or two of them negative, or both positive) we need to get the + # characters back. + if ($sign eq '-') { + $bx =~ tr<\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00> + <0123456789abcdef>; + } else { + $bx =~ tr<\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00> + <fedcba9876543210>; + } + + # leading zeros will be stripped by _from_hex() + $bx = '0x' . $bx; + $bx = $class -> _from_hex($bx); + + $bx = $class -> _inc($bx) if $sign eq '-'; + + # avoid negative zero + $sign = '+' if $class -> _is_zero($bx); + + return $bx, $sign; +} + +sub _sor { + my ($class, $x, $sx, $y, $sy) = @_; + + return ($class -> _zero(), '+') + if $class -> _is_zero($x) && $class -> _is_zero($y); + + my $sign = $sx eq '-' || $sy eq '-' ? '-' : '+'; + + my ($bx, $by); + + if ($sx eq '-') { # if x is negative + # two's complement: inc (dec unsigned value) and flip all "bits" in $bx + $bx = $class -> _copy($x); + $bx = $class -> _dec($bx); + $bx = $class -> _as_hex($bx); + $bx =~ s/^-?0x//; + $bx =~ tr<0123456789abcdef> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } else { # if x is positive + $bx = $class -> _as_hex($x); # get binary representation + $bx =~ s/^-?0x//; + $bx =~ tr<fedcba9876543210> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } + + if ($sy eq '-') { # if y is negative + # two's complement: inc (dec unsigned value) and flip all "bits" in $by + $by = $class -> _copy($y); + $by = $class -> _dec($by); + $by = $class -> _as_hex($by); + $by =~ s/^-?0x//; + $by =~ tr<0123456789abcdef> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } else { + $by = $class -> _as_hex($y); # get binary representation + $by =~ s/^-?0x//; + $by =~ tr<fedcba9876543210> + <\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00>; + } + + # now we have bit-strings from X and Y, reverse them for padding + $bx = reverse $bx; + $by = reverse $by; + + # padd the shorter string + my $xx = "\x00"; $xx = "\x0f" if $sx eq '-'; + my $yy = "\x00"; $yy = "\x0f" if $sy eq '-'; + my $diff = CORE::length($bx) - CORE::length($by); + if ($diff > 0) { + # if $yy eq "\x00", we can cut $bx, otherwise we need to padd $by + $by .= $yy x $diff; + } elsif ($diff < 0) { + # if $xx eq "\x00", we can cut $by, otherwise we need to padd $bx + $bx .= $xx x abs($diff); + } + + # or the strings together + my $r = $bx | $by; + + # and reverse the result again + $bx = reverse $r; + + # One of $bx or $by was negative, so need to flip bits in the result. In both + # cases (one or two of them negative, or both positive) we need to get the + # characters back. + if ($sign eq '-') { + $bx =~ tr<\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00> + <0123456789abcdef>; + } else { + $bx =~ tr<\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00> + <fedcba9876543210>; + } + + # leading zeros will be stripped by _from_hex() + $bx = '0x' . $bx; + $bx = $class -> _from_hex($bx); + + $bx = $class -> _inc($bx) if $sign eq '-'; + + # avoid negative zero + $sign = '+' if $class -> _is_zero($bx); + + return $bx, $sign; +} + sub _to_bin { # convert the number to a string of binary digits without prefix my ($class, $x) = @_; @@ -1162,6 +1417,43 @@ sub _to_bytes { *_as_bytes = \&_to_bytes; +sub _to_base { + # convert the number to a string of digits in various bases + my $class = shift; + my $x = shift; + my $base = shift; + $base = $class -> _new($base) unless ref($base); + + my $collseq; + if (@_) { + $collseq = shift(); + } else { + if ($class -> _acmp($base, $class -> _new("62")) <= 0) { + $collseq = '0123456789' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + . 'abcdefghijklmnopqrstuvwxyz'; + } else { + croak "When base > 62, a collation sequence must be given"; + } + } + + my @collseq = split '', $collseq; + my %collseq = map { $_ => $collseq[$_] } 0 .. $#collseq; + + my $str = ''; + my $tmp = $class -> _copy($x); + my $rem; + until ($class -> _is_zero($tmp)) { + ($tmp, $rem) = $class -> _div($tmp, $base); + my $num = $class -> _num($rem); + croak "no character to represent '$num' in collation sequence", + " (collation sequence is too short)" if $num > $#collseq; + my $chr = $collseq[$num]; + $str = $chr . $str; + } + return "0" unless length $str; + return $str; +} + sub _from_hex { # Convert a string of hexadecimal digits to a number. @@ -1264,6 +1556,56 @@ sub _from_bytes { return $x; } +sub _from_base { + # convert a string to a decimal number + my $class = shift; + my $str = shift; + my $base = shift; + $base = $class -> _new($base) unless ref($base); + + my $n = length($str); + my $x = $class -> _zero(); + + my $collseq; + if (@_) { + $collseq = shift(); + } else { + if ($class -> _acmp($base, $class -> _new("36")) <= 0) { + $str = uc $str; + $collseq = '0123456789' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + } elsif ($class -> _acmp($base, $class -> _new("62")) <= 0) { + $collseq = '0123456789' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + . 'abcdefghijklmnopqrstuvwxyz'; + } else { + croak "When base > 62, a collation sequence must be given"; + } + $collseq = substr $collseq, 0, $class -> _num($base); + } + + # Create a mapping from each character in the collation sequence to the + # corresponding integer. Check for duplicates in the collation sequence. + + my @collseq = split '', $collseq; + my %collseq; + for my $num (0 .. $#collseq) { + my $chr = $collseq[$num]; + die "duplicate character '$chr' in collation sequence" + if exists $collseq{$chr}; + $collseq{$chr} = $num; + } + + for (my $i = 0 ; $i < $n ; ++$i) { + my $chr = substr($str, $i, 1); + die "input character '$chr' does not exist in collation sequence" + unless exists $collseq{$chr}; + $x = $class -> _mul($x, $base); + my $num = $class -> _new($collseq{$chr}); + $x = $class -> _add($x, $num); + } + + return $x; +} + ############################################################################## # special modulus functions @@ -1637,6 +1979,37 @@ Returns an object given a byte string representing the number. The byte string is in big endian byte order, so the two-byte input string "\x01\x00" should give an output value representing the number 256. +=item CLASS-E<gt>_from_base(STR, BASE, COLLSEQ) + +Returns an object given a string STR, a base BASE, and a collation sequence +COLLSEQ. Each character in STR represents a numerical value identical to the +character's position in COLLSEQ. All characters in STR must be present in +COLLSEQ. + +If BASE is less than or equal to 62, and a collation sequence is not specified, +a default collation sequence consisting of the 62 characters 0..9, A..Z, and +a..z is used. If the default collation sequence is used, and the BASE is less +than or equal to 36, the letter case in STR is ignored. + +For instance, with base 3 and collation sequence "-/|", the character "-" +represents 0, "/" represents 1, and "|" represents 2. So if STR is "/|-", the +output is 1 * 3**2 + 2 * 3**1 + 0 * 3**0 = 15. + +The following examples show standard binary, octal, decimal, and hexadecimal +conversion. All examples return 250. + + $x = $class -> _from_base("11111010", 2) + $x = $class -> _from_base("372", 8) + $x = $class -> _from_base("250", 10) + $x = $class -> _from_base("FA", 16) + +Some more examples, all returning 250: + + $x = $class -> _from_base("100021", 3, "012") + $x = $class -> _from_base("3322", 4, "0123") + $x = $class -> _from_base("2000", 5, "01234") + $x = $class -> _from_base("caaa", 5, "abcde") + =back =head3 Mathematical functions @@ -1775,11 +2148,23 @@ Returns bitwise and. =item CLASS-E<gt>_or(OBJ1, OBJ2) -Return bitwise or. +Returns bitwise or. =item CLASS-E<gt>_xor(OBJ1, OBJ2) -Return bitwise exclusive or. +Returns bitwise exclusive or. + +=item CLASS-E<gt>_sand(OBJ1, OBJ2, SIGN1, SIGN2) + +Returns bitwise signed and. + +=item CLASS-E<gt>_sor(OBJ1, OBJ2, SIGN1, SIGN2) + +Returns bitwise signed or. + +=item CLASS-E<gt>_sxor(OBJ1, OBJ2, SIGN1, SIGN2) + +Returns bitwise signed exclusive or. =back @@ -1845,6 +2230,19 @@ Returns a byte string representation of OBJ. The byte string is in big endian byte order, so if OBJ represents the number 256, the output should be the two-byte string "\x01\x00". +=item CLASS-E<gt>_to_base(OBJ, BASE, COLLSEQ) + +Returns a string representation of OBJ in base BASE with collation sequence +COLLSEQ. + + $val = $class -> _new("210"); + $str = $class -> _to_base($val, 10, "xyz") # $str is "zyx" + + $val = $class -> _new("32"); + $str = $class -> _to_base($val, 2, "-|") # $str is "|-----" + +See _from_base() for more information. + =item CLASS-E<gt>_as_bin(OBJ) Like C<_to_bin()> but with a '0b' prefix. @@ -1951,30 +2349,6 @@ Perl scalar. =back -=head2 API optional methods - -The following methods are optional, and can be defined if the underlying lib -has a fast way to do them. If undefined, Math::BigInt will use pure Perl (hence -slow) fallback routines to emulate these: - -=head3 Signed bitwise operators. - -=over 4 - -=item CLASS-E<gt>_signed_or(OBJ1, OBJ2, SIGN1, SIGN2) - -Return the signed bitwise or. - -=item CLASS-E<gt>_signed_and(OBJ1, OBJ2, SIGN1, SIGN2) - -Return the signed bitwise and. - -=item CLASS-E<gt>_signed_xor(OBJ1, OBJ2, SIGN1, SIGN2) - -Return the signed bitwise exclusive or. - -=back - =head1 WRAP YOUR OWN If you want to port your own favourite C library for big numbers to the diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Lib/Minimal.pm b/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Lib/Minimal.pm index f613482f83b..73b79d94fbb 100644 --- a/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Lib/Minimal.pm +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Lib/Minimal.pm @@ -692,8 +692,8 @@ except that it might be much faster, depending on how the number is represented internally. For instance, if the object $obj represents the hexadecimal number 0xabcde, -then C<$obj->_rsft(2, 16)> returns an object representing the number 0xabc. The -"remainer", 0xde, is discarded and not returned. +then C<< $obj->_rsft(2, 16) >> returns an object representing the number 0xabc. +The "remainer", 0xde, is discarded and not returned. =item I<_lsft(OBJ, N, B)> diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/t/bnok-mbf.t b/gnu/usr.bin/perl/cpan/Math-BigInt/t/bnok-mbf.t new file mode 100644 index 00000000000..edeaad86ac4 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/t/bnok-mbf.t @@ -0,0 +1,1451 @@ +#!perl + +use strict; +use warnings; + +use Test::More tests => 4957; + +my $class; + +BEGIN { + $class = 'Math::BigFloat'; + use_ok($class); +} + +while (<DATA>) { + s/#.*$//; # remove comments + s/\s+$//; # remove trailing whitespace + next unless length; # skip empty lines + + my ($nval, $kval, $nokval) = split /:/; + my ($n, $k, $got, @got); + + for my $context_is_scalar (0, 1) { + for my $k_is_scalar (0, 1) { + + my $test = qq|\$n = $class -> new("$nval");|; + + $test .= $k_is_scalar + ? qq| \$k = "$kval";| + : qq| \$k = $class -> new("$kval");|; + + $test .= $context_is_scalar + ? qq| \$got = \$n -> bnok(\$k);| + : qq| \@got = \$n -> bnok(\$k);|; + + my $desc = "bnok() in "; + $desc .= $context_is_scalar ? "scalar context" : "list context"; + $desc .= $k_is_scalar ? " with k as scalar" : " with k as object"; + + subtest $desc, + sub { + plan tests => $context_is_scalar ? 7 : 8; + + eval $test; + is($@, "", "'$test' gives emtpy \$\@"); + + if ($context_is_scalar) { + + # Check output. + + is(ref($got), $class, + "'$test' output arg is a $class"); + + is($got -> bstr(), $nokval, + "'$test' output arg has the right value"); + + } else { + + # Check number of output arguments. + + cmp_ok(scalar @got, '==', 1, + "'$test' gives one output arg"); + + # Check output. + + is(ref($got[0]), $class, + "'$test' output arg is a $class"); + + is($got[0] -> bstr(), $nokval, + "'$test' output arg has the right value"); + } + + # Check the invocand. + + is(ref($n), $class, + "'$test' invocand is still a $class"); + + is($n -> bstr(), $nokval, + "'$test' invocand has the right value"); + + # Check the input argument. + + if ($k_is_scalar) { + + is(ref($k), '', + "'$test' second input arg is still a scalar"); + + is($k, $kval, + "'$test' second input arg is unmodified"); + + } else { + + is(ref($k), $class, + "'$test' second input arg is still a $class"); + + is($k -> bstr(), $kval, + "'$test' second input arg is unmodified"); + } + }; + } + } +} + +__DATA__ + +# n and/or k is NaN + +NaN:NaN:NaN +NaN:0:NaN +NaN:3:NaN +3:NaN:NaN +NaN:-3:NaN +-3:NaN:NaN + +# n = inf + +inf:-inf:NaN +inf:-3:0 +inf:-2:0 +inf:-1:0 +inf:0:1 +inf:1:inf +inf:2:inf +inf:3:inf +inf:inf:NaN + +# n = -inf + +-inf:-inf:NaN +-inf:-3:0 +-inf:-2:0 +-inf:-1:0 +-inf:0:1 +-inf:1:-inf +-inf:2:inf +-inf:3:-inf +-inf:inf:NaN + +# k = inf + +-3:inf:NaN +-2:inf:NaN +-1:inf:NaN +0:inf:NaN +1:inf:NaN +2:inf:NaN +3:inf:NaN + +# k = -inf + +-3:-inf:NaN +-2:-inf:NaN +-1:-inf:NaN +0:-inf:NaN +1:-inf:NaN +2:-inf:NaN +3:-inf:NaN + +# n = -15, k = n - 15 ... n + 15 + +-15:-30:-77558760 +-15:-29:40116600 +-15:-28:-20058300 +-15:-27:9657700 +-15:-26:-4457400 +-15:-25:1961256 +-15:-24:-817190 +-15:-23:319770 +-15:-22:-116280 +-15:-21:38760 +-15:-20:-11628 +-15:-19:3060 +-15:-18:-680 +-15:-17:120 +-15:-16:-15 +-15:-15:1 +-15:-14:0 +-15:-13:0 +-15:-12:0 +-15:-11:0 +-15:-10:0 +-15:-9:0 +-15:-8:0 +-15:-7:0 +-15:-6:0 +-15:-5:0 +-15:-4:0 +-15:-3:0 +-15:-2:0 +-15:-1:0 +-15:0:1 +-15:1:-15 +-15:2:120 +-15:3:-680 +-15:4:3060 +-15:5:-11628 +-15:6:38760 +-15:7:-116280 +-15:8:319770 +-15:9:-817190 +-15:10:1961256 +-15:11:-4457400 +-15:12:9657700 +-15:13:-20058300 +-15:14:40116600 +-15:15:-77558760 + +# n = -14, k = n - 15 ... n + 15 + +-14:-29:-37442160 +-14:-28:20058300 +-14:-27:-10400600 +-14:-26:5200300 +-14:-25:-2496144 +-14:-24:1144066 +-14:-23:-497420 +-14:-22:203490 +-14:-21:-77520 +-14:-20:27132 +-14:-19:-8568 +-14:-18:2380 +-14:-17:-560 +-14:-16:105 +-14:-15:-14 +-14:-14:1 +-14:-13:0 +-14:-12:0 +-14:-11:0 +-14:-10:0 +-14:-9:0 +-14:-8:0 +-14:-7:0 +-14:-6:0 +-14:-5:0 +-14:-4:0 +-14:-3:0 +-14:-2:0 +-14:-1:0 +-14:0:1 +-14:1:-14 +-14:2:105 +-14:3:-560 +-14:4:2380 +-14:5:-8568 +-14:6:27132 +-14:7:-77520 +-14:8:203490 +-14:9:-497420 +-14:10:1144066 +-14:11:-2496144 +-14:12:5200300 +-14:13:-10400600 +-14:14:20058300 +-14:15:-37442160 + +# n = -13, k = n - 15 ... n + 15 + +-13:-28:-17383860 +-13:-27:9657700 +-13:-26:-5200300 +-13:-25:2704156 +-13:-24:-1352078 +-13:-23:646646 +-13:-22:-293930 +-13:-21:125970 +-13:-20:-50388 +-13:-19:18564 +-13:-18:-6188 +-13:-17:1820 +-13:-16:-455 +-13:-15:91 +-13:-14:-13 +-13:-13:1 +-13:-12:0 +-13:-11:0 +-13:-10:0 +-13:-9:0 +-13:-8:0 +-13:-7:0 +-13:-6:0 +-13:-5:0 +-13:-4:0 +-13:-3:0 +-13:-2:0 +-13:-1:0 +-13:0:1 +-13:1:-13 +-13:2:91 +-13:3:-455 +-13:4:1820 +-13:5:-6188 +-13:6:18564 +-13:7:-50388 +-13:8:125970 +-13:9:-293930 +-13:10:646646 +-13:11:-1352078 +-13:12:2704156 +-13:13:-5200300 +-13:14:9657700 +-13:15:-17383860 + +# n = -12, k = n - 15 ... n + 15 + +-12:-27:-7726160 +-12:-26:4457400 +-12:-25:-2496144 +-12:-24:1352078 +-12:-23:-705432 +-12:-22:352716 +-12:-21:-167960 +-12:-20:75582 +-12:-19:-31824 +-12:-18:12376 +-12:-17:-4368 +-12:-16:1365 +-12:-15:-364 +-12:-14:78 +-12:-13:-12 +-12:-12:1 +-12:-11:0 +-12:-10:0 +-12:-9:0 +-12:-8:0 +-12:-7:0 +-12:-6:0 +-12:-5:0 +-12:-4:0 +-12:-3:0 +-12:-2:0 +-12:-1:0 +-12:0:1 +-12:1:-12 +-12:2:78 +-12:3:-364 +-12:4:1365 +-12:5:-4368 +-12:6:12376 +-12:7:-31824 +-12:8:75582 +-12:9:-167960 +-12:10:352716 +-12:11:-705432 +-12:12:1352078 +-12:13:-2496144 +-12:14:4457400 +-12:15:-7726160 + +# n = -11, k = n - 15 ... n + 15 + +-11:-26:-3268760 +-11:-25:1961256 +-11:-24:-1144066 +-11:-23:646646 +-11:-22:-352716 +-11:-21:184756 +-11:-20:-92378 +-11:-19:43758 +-11:-18:-19448 +-11:-17:8008 +-11:-16:-3003 +-11:-15:1001 +-11:-14:-286 +-11:-13:66 +-11:-12:-11 +-11:-11:1 +-11:-10:0 +-11:-9:0 +-11:-8:0 +-11:-7:0 +-11:-6:0 +-11:-5:0 +-11:-4:0 +-11:-3:0 +-11:-2:0 +-11:-1:0 +-11:0:1 +-11:1:-11 +-11:2:66 +-11:3:-286 +-11:4:1001 +-11:5:-3003 +-11:6:8008 +-11:7:-19448 +-11:8:43758 +-11:9:-92378 +-11:10:184756 +-11:11:-352716 +-11:12:646646 +-11:13:-1144066 +-11:14:1961256 +-11:15:-3268760 + +# n = -10, k = n - 15 ... n + 15 + +-10:-25:-1307504 +-10:-24:817190 +-10:-23:-497420 +-10:-22:293930 +-10:-21:-167960 +-10:-20:92378 +-10:-19:-48620 +-10:-18:24310 +-10:-17:-11440 +-10:-16:5005 +-10:-15:-2002 +-10:-14:715 +-10:-13:-220 +-10:-12:55 +-10:-11:-10 +-10:-10:1 +-10:-9:0 +-10:-8:0 +-10:-7:0 +-10:-6:0 +-10:-5:0 +-10:-4:0 +-10:-3:0 +-10:-2:0 +-10:-1:0 +-10:0:1 +-10:1:-10 +-10:2:55 +-10:3:-220 +-10:4:715 +-10:5:-2002 +-10:6:5005 +-10:7:-11440 +-10:8:24310 +-10:9:-48620 +-10:10:92378 +-10:11:-167960 +-10:12:293930 +-10:13:-497420 +-10:14:817190 +-10:15:-1307504 + +# n = -9, k = n - 15 ... n + 15 + +-9:-24:-490314 +-9:-23:319770 +-9:-22:-203490 +-9:-21:125970 +-9:-20:-75582 +-9:-19:43758 +-9:-18:-24310 +-9:-17:12870 +-9:-16:-6435 +-9:-15:3003 +-9:-14:-1287 +-9:-13:495 +-9:-12:-165 +-9:-11:45 +-9:-10:-9 +-9:-9:1 +-9:-8:0 +-9:-7:0 +-9:-6:0 +-9:-5:0 +-9:-4:0 +-9:-3:0 +-9:-2:0 +-9:-1:0 +-9:0:1 +-9:1:-9 +-9:2:45 +-9:3:-165 +-9:4:495 +-9:5:-1287 +-9:6:3003 +-9:7:-6435 +-9:8:12870 +-9:9:-24310 +-9:10:43758 +-9:11:-75582 +-9:12:125970 +-9:13:-203490 +-9:14:319770 +-9:15:-490314 + +# n = -8, k = n - 15 ... n + 15 + +-8:-23:-170544 +-8:-22:116280 +-8:-21:-77520 +-8:-20:50388 +-8:-19:-31824 +-8:-18:19448 +-8:-17:-11440 +-8:-16:6435 +-8:-15:-3432 +-8:-14:1716 +-8:-13:-792 +-8:-12:330 +-8:-11:-120 +-8:-10:36 +-8:-9:-8 +-8:-8:1 +-8:-7:0 +-8:-6:0 +-8:-5:0 +-8:-4:0 +-8:-3:0 +-8:-2:0 +-8:-1:0 +-8:0:1 +-8:1:-8 +-8:2:36 +-8:3:-120 +-8:4:330 +-8:5:-792 +-8:6:1716 +-8:7:-3432 +-8:8:6435 +-8:9:-11440 +-8:10:19448 +-8:11:-31824 +-8:12:50388 +-8:13:-77520 +-8:14:116280 +-8:15:-170544 + +# n = -7, k = n - 15 ... n + 15 + +-7:-22:-54264 +-7:-21:38760 +-7:-20:-27132 +-7:-19:18564 +-7:-18:-12376 +-7:-17:8008 +-7:-16:-5005 +-7:-15:3003 +-7:-14:-1716 +-7:-13:924 +-7:-12:-462 +-7:-11:210 +-7:-10:-84 +-7:-9:28 +-7:-8:-7 +-7:-7:1 +-7:-6:0 +-7:-5:0 +-7:-4:0 +-7:-3:0 +-7:-2:0 +-7:-1:0 +-7:0:1 +-7:1:-7 +-7:2:28 +-7:3:-84 +-7:4:210 +-7:5:-462 +-7:6:924 +-7:7:-1716 +-7:8:3003 +-7:9:-5005 +-7:10:8008 +-7:11:-12376 +-7:12:18564 +-7:13:-27132 +-7:14:38760 +-7:15:-54264 + +# n = -6, k = n - 15 ... n + 15 + +-6:-21:-15504 +-6:-20:11628 +-6:-19:-8568 +-6:-18:6188 +-6:-17:-4368 +-6:-16:3003 +-6:-15:-2002 +-6:-14:1287 +-6:-13:-792 +-6:-12:462 +-6:-11:-252 +-6:-10:126 +-6:-9:-56 +-6:-8:21 +-6:-7:-6 +-6:-6:1 +-6:-5:0 +-6:-4:0 +-6:-3:0 +-6:-2:0 +-6:-1:0 +-6:0:1 +-6:1:-6 +-6:2:21 +-6:3:-56 +-6:4:126 +-6:5:-252 +-6:6:462 +-6:7:-792 +-6:8:1287 +-6:9:-2002 +-6:10:3003 +-6:11:-4368 +-6:12:6188 +-6:13:-8568 +-6:14:11628 +-6:15:-15504 + +# n = -5, k = n - 15 ... n + 15 + +-5:-20:-3876 +-5:-19:3060 +-5:-18:-2380 +-5:-17:1820 +-5:-16:-1365 +-5:-15:1001 +-5:-14:-715 +-5:-13:495 +-5:-12:-330 +-5:-11:210 +-5:-10:-126 +-5:-9:70 +-5:-8:-35 +-5:-7:15 +-5:-6:-5 +-5:-5:1 +-5:-4:0 +-5:-3:0 +-5:-2:0 +-5:-1:0 +-5:0:1 +-5:1:-5 +-5:2:15 +-5:3:-35 +-5:4:70 +-5:5:-126 +-5:6:210 +-5:7:-330 +-5:8:495 +-5:9:-715 +-5:10:1001 +-5:11:-1365 +-5:12:1820 +-5:13:-2380 +-5:14:3060 +-5:15:-3876 + +# n = -4, k = n - 15 ... n + 15 + +-4:-19:-816 +-4:-18:680 +-4:-17:-560 +-4:-16:455 +-4:-15:-364 +-4:-14:286 +-4:-13:-220 +-4:-12:165 +-4:-11:-120 +-4:-10:84 +-4:-9:-56 +-4:-8:35 +-4:-7:-20 +-4:-6:10 +-4:-5:-4 +-4:-4:1 +-4:-3:0 +-4:-2:0 +-4:-1:0 +-4:0:1 +-4:1:-4 +-4:2:10 +-4:3:-20 +-4:4:35 +-4:5:-56 +-4:6:84 +-4:7:-120 +-4:8:165 +-4:9:-220 +-4:10:286 +-4:11:-364 +-4:12:455 +-4:13:-560 +-4:14:680 +-4:15:-816 + +# n = -3, k = n - 15 ... n + 15 + +-3:-18:-136 +-3:-17:120 +-3:-16:-105 +-3:-15:91 +-3:-14:-78 +-3:-13:66 +-3:-12:-55 +-3:-11:45 +-3:-10:-36 +-3:-9:28 +-3:-8:-21 +-3:-7:15 +-3:-6:-10 +-3:-5:6 +-3:-4:-3 +-3:-3:1 +-3:-2:0 +-3:-1:0 +-3:0:1 +-3:1:-3 +-3:2:6 +-3:3:-10 +-3:4:15 +-3:5:-21 +-3:6:28 +-3:7:-36 +-3:8:45 +-3:9:-55 +-3:10:66 +-3:11:-78 +-3:12:91 +-3:13:-105 +-3:14:120 +-3:15:-136 + +# n = -2, k = n - 15 ... n + 15 + +-2:-17:-16 +-2:-16:15 +-2:-15:-14 +-2:-14:13 +-2:-13:-12 +-2:-12:11 +-2:-11:-10 +-2:-10:9 +-2:-9:-8 +-2:-8:7 +-2:-7:-6 +-2:-6:5 +-2:-5:-4 +-2:-4:3 +-2:-3:-2 +-2:-2:1 +-2:-1:0 +-2:0:1 +-2:1:-2 +-2:2:3 +-2:3:-4 +-2:4:5 +-2:5:-6 +-2:6:7 +-2:7:-8 +-2:8:9 +-2:9:-10 +-2:10:11 +-2:11:-12 +-2:12:13 +-2:13:-14 +-2:14:15 +-2:15:-16 + +# n = -1, k = n - 15 ... n + 15 + +-1:-16:-1 +-1:-15:1 +-1:-14:-1 +-1:-13:1 +-1:-12:-1 +-1:-11:1 +-1:-10:-1 +-1:-9:1 +-1:-8:-1 +-1:-7:1 +-1:-6:-1 +-1:-5:1 +-1:-4:-1 +-1:-3:1 +-1:-2:-1 +-1:-1:1 +-1:0:1 +-1:1:-1 +-1:2:1 +-1:3:-1 +-1:4:1 +-1:5:-1 +-1:6:1 +-1:7:-1 +-1:8:1 +-1:9:-1 +-1:10:1 +-1:11:-1 +-1:12:1 +-1:13:-1 +-1:14:1 +-1:15:-1 + +# n = 0, k = n - 15 ... n + 15 + +0:-15:0 +0:-14:0 +0:-13:0 +0:-12:0 +0:-11:0 +0:-10:0 +0:-9:0 +0:-8:0 +0:-7:0 +0:-6:0 +0:-5:0 +0:-4:0 +0:-3:0 +0:-2:0 +0:-1:0 +0:0:1 +0:1:0 +0:2:0 +0:3:0 +0:4:0 +0:5:0 +0:6:0 +0:7:0 +0:8:0 +0:9:0 +0:10:0 +0:11:0 +0:12:0 +0:13:0 +0:14:0 +0:15:0 + +# n = 1, k = n - 15 ... n + 15 + +1:-15:0 +1:-14:0 +1:-13:0 +1:-12:0 +1:-11:0 +1:-10:0 +1:-9:0 +1:-8:0 +1:-7:0 +1:-6:0 +1:-5:0 +1:-4:0 +1:-3:0 +1:-2:0 +1:-1:0 +1:0:1 +1:1:1 +1:2:0 +1:3:0 +1:4:0 +1:5:0 +1:6:0 +1:7:0 +1:8:0 +1:9:0 +1:10:0 +1:11:0 +1:12:0 +1:13:0 +1:14:0 +1:15:0 +1:16:0 + +# n = 2, k = n - 15 ... n + 15 + +2:-15:0 +2:-14:0 +2:-13:0 +2:-12:0 +2:-11:0 +2:-10:0 +2:-9:0 +2:-8:0 +2:-7:0 +2:-6:0 +2:-5:0 +2:-4:0 +2:-3:0 +2:-2:0 +2:-1:0 +2:0:1 +2:1:2 +2:2:1 +2:3:0 +2:4:0 +2:5:0 +2:6:0 +2:7:0 +2:8:0 +2:9:0 +2:10:0 +2:11:0 +2:12:0 +2:13:0 +2:14:0 +2:15:0 +2:16:0 +2:17:0 + +# n = 3, k = n - 15 ... n + 15 + +3:-15:0 +3:-14:0 +3:-13:0 +3:-12:0 +3:-11:0 +3:-10:0 +3:-9:0 +3:-8:0 +3:-7:0 +3:-6:0 +3:-5:0 +3:-4:0 +3:-3:0 +3:-2:0 +3:-1:0 +3:0:1 +3:1:3 +3:2:3 +3:3:1 +3:4:0 +3:5:0 +3:6:0 +3:7:0 +3:8:0 +3:9:0 +3:10:0 +3:11:0 +3:12:0 +3:13:0 +3:14:0 +3:15:0 +3:16:0 +3:17:0 +3:18:0 + +# n = 4, k = n - 15 ... n + 15 + +4:-15:0 +4:-14:0 +4:-13:0 +4:-12:0 +4:-11:0 +4:-10:0 +4:-9:0 +4:-8:0 +4:-7:0 +4:-6:0 +4:-5:0 +4:-4:0 +4:-3:0 +4:-2:0 +4:-1:0 +4:0:1 +4:1:4 +4:2:6 +4:3:4 +4:4:1 +4:5:0 +4:6:0 +4:7:0 +4:8:0 +4:9:0 +4:10:0 +4:11:0 +4:12:0 +4:13:0 +4:14:0 +4:15:0 +4:16:0 +4:17:0 +4:18:0 +4:19:0 + +# n = 5, k = n - 15 ... n + 15 + +5:-15:0 +5:-14:0 +5:-13:0 +5:-12:0 +5:-11:0 +5:-10:0 +5:-9:0 +5:-8:0 +5:-7:0 +5:-6:0 +5:-5:0 +5:-4:0 +5:-3:0 +5:-2:0 +5:-1:0 +5:0:1 +5:1:5 +5:2:10 +5:3:10 +5:4:5 +5:5:1 +5:6:0 +5:7:0 +5:8:0 +5:9:0 +5:10:0 +5:11:0 +5:12:0 +5:13:0 +5:14:0 +5:15:0 +5:16:0 +5:17:0 +5:18:0 +5:19:0 +5:20:0 + +# n = 6, k = n - 15 ... n + 15 + +6:-15:0 +6:-14:0 +6:-13:0 +6:-12:0 +6:-11:0 +6:-10:0 +6:-9:0 +6:-8:0 +6:-7:0 +6:-6:0 +6:-5:0 +6:-4:0 +6:-3:0 +6:-2:0 +6:-1:0 +6:0:1 +6:1:6 +6:2:15 +6:3:20 +6:4:15 +6:5:6 +6:6:1 +6:7:0 +6:8:0 +6:9:0 +6:10:0 +6:11:0 +6:12:0 +6:13:0 +6:14:0 +6:15:0 +6:16:0 +6:17:0 +6:18:0 +6:19:0 +6:20:0 +6:21:0 + +# n = 7, k = n - 15 ... n + 15 + +7:-15:0 +7:-14:0 +7:-13:0 +7:-12:0 +7:-11:0 +7:-10:0 +7:-9:0 +7:-8:0 +7:-7:0 +7:-6:0 +7:-5:0 +7:-4:0 +7:-3:0 +7:-2:0 +7:-1:0 +7:0:1 +7:1:7 +7:2:21 +7:3:35 +7:4:35 +7:5:21 +7:6:7 +7:7:1 +7:8:0 +7:9:0 +7:10:0 +7:11:0 +7:12:0 +7:13:0 +7:14:0 +7:15:0 +7:16:0 +7:17:0 +7:18:0 +7:19:0 +7:20:0 +7:21:0 +7:22:0 + +# n = 8, k = n - 15 ... n + 15 + +8:-15:0 +8:-14:0 +8:-13:0 +8:-12:0 +8:-11:0 +8:-10:0 +8:-9:0 +8:-8:0 +8:-7:0 +8:-6:0 +8:-5:0 +8:-4:0 +8:-3:0 +8:-2:0 +8:-1:0 +8:0:1 +8:1:8 +8:2:28 +8:3:56 +8:4:70 +8:5:56 +8:6:28 +8:7:8 +8:8:1 +8:9:0 +8:10:0 +8:11:0 +8:12:0 +8:13:0 +8:14:0 +8:15:0 +8:16:0 +8:17:0 +8:18:0 +8:19:0 +8:20:0 +8:21:0 +8:22:0 +8:23:0 + +# n = 9, k = n - 15 ... n + 15 + +9:-15:0 +9:-14:0 +9:-13:0 +9:-12:0 +9:-11:0 +9:-10:0 +9:-9:0 +9:-8:0 +9:-7:0 +9:-6:0 +9:-5:0 +9:-4:0 +9:-3:0 +9:-2:0 +9:-1:0 +9:0:1 +9:1:9 +9:2:36 +9:3:84 +9:4:126 +9:5:126 +9:6:84 +9:7:36 +9:8:9 +9:9:1 +9:10:0 +9:11:0 +9:12:0 +9:13:0 +9:14:0 +9:15:0 +9:16:0 +9:17:0 +9:18:0 +9:19:0 +9:20:0 +9:21:0 +9:22:0 +9:23:0 +9:24:0 + +# n = 10, k = n - 15 ... n + 15 + +10:-15:0 +10:-14:0 +10:-13:0 +10:-12:0 +10:-11:0 +10:-10:0 +10:-9:0 +10:-8:0 +10:-7:0 +10:-6:0 +10:-5:0 +10:-4:0 +10:-3:0 +10:-2:0 +10:-1:0 +10:0:1 +10:1:10 +10:2:45 +10:3:120 +10:4:210 +10:5:252 +10:6:210 +10:7:120 +10:8:45 +10:9:10 +10:10:1 +10:11:0 +10:12:0 +10:13:0 +10:14:0 +10:15:0 +10:16:0 +10:17:0 +10:18:0 +10:19:0 +10:20:0 +10:21:0 +10:22:0 +10:23:0 +10:24:0 +10:25:0 + +# n = 11, k = n - 15 ... n + 15 + +11:-15:0 +11:-14:0 +11:-13:0 +11:-12:0 +11:-11:0 +11:-10:0 +11:-9:0 +11:-8:0 +11:-7:0 +11:-6:0 +11:-5:0 +11:-4:0 +11:-3:0 +11:-2:0 +11:-1:0 +11:0:1 +11:1:11 +11:2:55 +11:3:165 +11:4:330 +11:5:462 +11:6:462 +11:7:330 +11:8:165 +11:9:55 +11:10:11 +11:11:1 +11:12:0 +11:13:0 +11:14:0 +11:15:0 +11:16:0 +11:17:0 +11:18:0 +11:19:0 +11:20:0 +11:21:0 +11:22:0 +11:23:0 +11:24:0 +11:25:0 +11:26:0 + +# n = 12, k = n - 15 ... n + 15 + +12:-15:0 +12:-14:0 +12:-13:0 +12:-12:0 +12:-11:0 +12:-10:0 +12:-9:0 +12:-8:0 +12:-7:0 +12:-6:0 +12:-5:0 +12:-4:0 +12:-3:0 +12:-2:0 +12:-1:0 +12:0:1 +12:1:12 +12:2:66 +12:3:220 +12:4:495 +12:5:792 +12:6:924 +12:7:792 +12:8:495 +12:9:220 +12:10:66 +12:11:12 +12:12:1 +12:13:0 +12:14:0 +12:15:0 +12:16:0 +12:17:0 +12:18:0 +12:19:0 +12:20:0 +12:21:0 +12:22:0 +12:23:0 +12:24:0 +12:25:0 +12:26:0 +12:27:0 + +# n = 13, k = n - 15 ... n + 15 + +13:-15:0 +13:-14:0 +13:-13:0 +13:-12:0 +13:-11:0 +13:-10:0 +13:-9:0 +13:-8:0 +13:-7:0 +13:-6:0 +13:-5:0 +13:-4:0 +13:-3:0 +13:-2:0 +13:-1:0 +13:0:1 +13:1:13 +13:2:78 +13:3:286 +13:4:715 +13:5:1287 +13:6:1716 +13:7:1716 +13:8:1287 +13:9:715 +13:10:286 +13:11:78 +13:12:13 +13:13:1 +13:14:0 +13:15:0 +13:16:0 +13:17:0 +13:18:0 +13:19:0 +13:20:0 +13:21:0 +13:22:0 +13:23:0 +13:24:0 +13:25:0 +13:26:0 +13:27:0 +13:28:0 + +# n = 14, k = n - 15 ... n + 15 + +14:-15:0 +14:-14:0 +14:-13:0 +14:-12:0 +14:-11:0 +14:-10:0 +14:-9:0 +14:-8:0 +14:-7:0 +14:-6:0 +14:-5:0 +14:-4:0 +14:-3:0 +14:-2:0 +14:-1:0 +14:0:1 +14:1:14 +14:2:91 +14:3:364 +14:4:1001 +14:5:2002 +14:6:3003 +14:7:3432 +14:8:3003 +14:9:2002 +14:10:1001 +14:11:364 +14:12:91 +14:13:14 +14:14:1 +14:15:0 +14:16:0 +14:17:0 +14:18:0 +14:19:0 +14:20:0 +14:21:0 +14:22:0 +14:23:0 +14:24:0 +14:25:0 +14:26:0 +14:27:0 +14:28:0 +14:29:0 + +# n = 15, k = n - 15 ... n + 15 + +15:-15:0 +15:-14:0 +15:-13:0 +15:-12:0 +15:-11:0 +15:-10:0 +15:-9:0 +15:-8:0 +15:-7:0 +15:-6:0 +15:-5:0 +15:-4:0 +15:-3:0 +15:-2:0 +15:-1:0 +15:0:1 +15:1:15 +15:2:105 +15:3:455 +15:4:1365 +15:5:3003 +15:6:5005 +15:7:6435 +15:8:6435 +15:9:5005 +15:10:3003 +15:11:1365 +15:12:455 +15:13:105 +15:14:15 +15:15:1 +15:16:0 +15:17:0 +15:18:0 +15:19:0 +15:20:0 +15:21:0 +15:22:0 +15:23:0 +15:24:0 +15:25:0 +15:26:0 +15:27:0 +15:28:0 +15:29:0 +15:30:0 diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/t/bnok-mbi.t b/gnu/usr.bin/perl/cpan/Math-BigInt/t/bnok-mbi.t new file mode 100644 index 00000000000..9fd3ab2e726 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/t/bnok-mbi.t @@ -0,0 +1,1451 @@ +#!perl + +use strict; +use warnings; + +use Test::More tests => 4957; + +my $class; + +BEGIN { + $class = 'Math::BigInt'; + use_ok($class); +} + +while (<DATA>) { + s/#.*$//; # remove comments + s/\s+$//; # remove trailing whitespace + next unless length; # skip empty lines + + my ($nval, $kval, $nokval) = split /:/; + my ($n, $k, $got, @got); + + for my $context_is_scalar (0, 1) { + for my $k_is_scalar (0, 1) { + + my $test = qq|\$n = $class -> new("$nval");|; + + $test .= $k_is_scalar + ? qq| \$k = "$kval";| + : qq| \$k = $class -> new("$kval");|; + + $test .= $context_is_scalar + ? qq| \$got = \$n -> bnok(\$k);| + : qq| \@got = \$n -> bnok(\$k);|; + + my $desc = "bnok() in "; + $desc .= $context_is_scalar ? "scalar context" : "list context"; + $desc .= $k_is_scalar ? " with k as scalar" : " with k as object"; + + subtest $desc, + sub { + plan tests => $context_is_scalar ? 7 : 8; + + eval $test; + is($@, "", "'$test' gives emtpy \$\@"); + + if ($context_is_scalar) { + + # Check output. + + is(ref($got), $class, + "'$test' output arg is a $class"); + + is($got -> bstr(), $nokval, + "'$test' output arg has the right value"); + + } else { + + # Check number of output arguments. + + cmp_ok(scalar @got, '==', 1, + "'$test' gives one output arg"); + + # Check output. + + is(ref($got[0]), $class, + "'$test' output arg is a $class"); + + is($got[0] -> bstr(), $nokval, + "'$test' output arg has the right value"); + } + + # Check the invocand. + + is(ref($n), $class, + "'$test' invocand is still a $class"); + + is($n -> bstr(), $nokval, + "'$test' invocand has the right value"); + + # Check the input argument. + + if ($k_is_scalar) { + + is(ref($k), '', + "'$test' second input arg is still a scalar"); + + is($k, $kval, + "'$test' second input arg is unmodified"); + + } else { + + is(ref($k), $class, + "'$test' second input arg is still a $class"); + + is($k -> bstr(), $kval, + "'$test' second input arg is unmodified"); + } + }; + } + } +} + +__DATA__ + +# n and/or k is NaN + +NaN:NaN:NaN +NaN:0:NaN +NaN:3:NaN +3:NaN:NaN +NaN:-3:NaN +-3:NaN:NaN + +# n = inf + +inf:-inf:NaN +inf:-3:0 +inf:-2:0 +inf:-1:0 +inf:0:1 +inf:1:inf +inf:2:inf +inf:3:inf +inf:inf:NaN + +# n = -inf + +-inf:-inf:NaN +-inf:-3:0 +-inf:-2:0 +-inf:-1:0 +-inf:0:1 +-inf:1:-inf +-inf:2:inf +-inf:3:-inf +-inf:inf:NaN + +# k = inf + +-3:inf:NaN +-2:inf:NaN +-1:inf:NaN +0:inf:NaN +1:inf:NaN +2:inf:NaN +3:inf:NaN + +# k = -inf + +-3:-inf:NaN +-2:-inf:NaN +-1:-inf:NaN +0:-inf:NaN +1:-inf:NaN +2:-inf:NaN +3:-inf:NaN + +# n = -15, k = n - 15 ... n + 15 + +-15:-30:-77558760 +-15:-29:40116600 +-15:-28:-20058300 +-15:-27:9657700 +-15:-26:-4457400 +-15:-25:1961256 +-15:-24:-817190 +-15:-23:319770 +-15:-22:-116280 +-15:-21:38760 +-15:-20:-11628 +-15:-19:3060 +-15:-18:-680 +-15:-17:120 +-15:-16:-15 +-15:-15:1 +-15:-14:0 +-15:-13:0 +-15:-12:0 +-15:-11:0 +-15:-10:0 +-15:-9:0 +-15:-8:0 +-15:-7:0 +-15:-6:0 +-15:-5:0 +-15:-4:0 +-15:-3:0 +-15:-2:0 +-15:-1:0 +-15:0:1 +-15:1:-15 +-15:2:120 +-15:3:-680 +-15:4:3060 +-15:5:-11628 +-15:6:38760 +-15:7:-116280 +-15:8:319770 +-15:9:-817190 +-15:10:1961256 +-15:11:-4457400 +-15:12:9657700 +-15:13:-20058300 +-15:14:40116600 +-15:15:-77558760 + +# n = -14, k = n - 15 ... n + 15 + +-14:-29:-37442160 +-14:-28:20058300 +-14:-27:-10400600 +-14:-26:5200300 +-14:-25:-2496144 +-14:-24:1144066 +-14:-23:-497420 +-14:-22:203490 +-14:-21:-77520 +-14:-20:27132 +-14:-19:-8568 +-14:-18:2380 +-14:-17:-560 +-14:-16:105 +-14:-15:-14 +-14:-14:1 +-14:-13:0 +-14:-12:0 +-14:-11:0 +-14:-10:0 +-14:-9:0 +-14:-8:0 +-14:-7:0 +-14:-6:0 +-14:-5:0 +-14:-4:0 +-14:-3:0 +-14:-2:0 +-14:-1:0 +-14:0:1 +-14:1:-14 +-14:2:105 +-14:3:-560 +-14:4:2380 +-14:5:-8568 +-14:6:27132 +-14:7:-77520 +-14:8:203490 +-14:9:-497420 +-14:10:1144066 +-14:11:-2496144 +-14:12:5200300 +-14:13:-10400600 +-14:14:20058300 +-14:15:-37442160 + +# n = -13, k = n - 15 ... n + 15 + +-13:-28:-17383860 +-13:-27:9657700 +-13:-26:-5200300 +-13:-25:2704156 +-13:-24:-1352078 +-13:-23:646646 +-13:-22:-293930 +-13:-21:125970 +-13:-20:-50388 +-13:-19:18564 +-13:-18:-6188 +-13:-17:1820 +-13:-16:-455 +-13:-15:91 +-13:-14:-13 +-13:-13:1 +-13:-12:0 +-13:-11:0 +-13:-10:0 +-13:-9:0 +-13:-8:0 +-13:-7:0 +-13:-6:0 +-13:-5:0 +-13:-4:0 +-13:-3:0 +-13:-2:0 +-13:-1:0 +-13:0:1 +-13:1:-13 +-13:2:91 +-13:3:-455 +-13:4:1820 +-13:5:-6188 +-13:6:18564 +-13:7:-50388 +-13:8:125970 +-13:9:-293930 +-13:10:646646 +-13:11:-1352078 +-13:12:2704156 +-13:13:-5200300 +-13:14:9657700 +-13:15:-17383860 + +# n = -12, k = n - 15 ... n + 15 + +-12:-27:-7726160 +-12:-26:4457400 +-12:-25:-2496144 +-12:-24:1352078 +-12:-23:-705432 +-12:-22:352716 +-12:-21:-167960 +-12:-20:75582 +-12:-19:-31824 +-12:-18:12376 +-12:-17:-4368 +-12:-16:1365 +-12:-15:-364 +-12:-14:78 +-12:-13:-12 +-12:-12:1 +-12:-11:0 +-12:-10:0 +-12:-9:0 +-12:-8:0 +-12:-7:0 +-12:-6:0 +-12:-5:0 +-12:-4:0 +-12:-3:0 +-12:-2:0 +-12:-1:0 +-12:0:1 +-12:1:-12 +-12:2:78 +-12:3:-364 +-12:4:1365 +-12:5:-4368 +-12:6:12376 +-12:7:-31824 +-12:8:75582 +-12:9:-167960 +-12:10:352716 +-12:11:-705432 +-12:12:1352078 +-12:13:-2496144 +-12:14:4457400 +-12:15:-7726160 + +# n = -11, k = n - 15 ... n + 15 + +-11:-26:-3268760 +-11:-25:1961256 +-11:-24:-1144066 +-11:-23:646646 +-11:-22:-352716 +-11:-21:184756 +-11:-20:-92378 +-11:-19:43758 +-11:-18:-19448 +-11:-17:8008 +-11:-16:-3003 +-11:-15:1001 +-11:-14:-286 +-11:-13:66 +-11:-12:-11 +-11:-11:1 +-11:-10:0 +-11:-9:0 +-11:-8:0 +-11:-7:0 +-11:-6:0 +-11:-5:0 +-11:-4:0 +-11:-3:0 +-11:-2:0 +-11:-1:0 +-11:0:1 +-11:1:-11 +-11:2:66 +-11:3:-286 +-11:4:1001 +-11:5:-3003 +-11:6:8008 +-11:7:-19448 +-11:8:43758 +-11:9:-92378 +-11:10:184756 +-11:11:-352716 +-11:12:646646 +-11:13:-1144066 +-11:14:1961256 +-11:15:-3268760 + +# n = -10, k = n - 15 ... n + 15 + +-10:-25:-1307504 +-10:-24:817190 +-10:-23:-497420 +-10:-22:293930 +-10:-21:-167960 +-10:-20:92378 +-10:-19:-48620 +-10:-18:24310 +-10:-17:-11440 +-10:-16:5005 +-10:-15:-2002 +-10:-14:715 +-10:-13:-220 +-10:-12:55 +-10:-11:-10 +-10:-10:1 +-10:-9:0 +-10:-8:0 +-10:-7:0 +-10:-6:0 +-10:-5:0 +-10:-4:0 +-10:-3:0 +-10:-2:0 +-10:-1:0 +-10:0:1 +-10:1:-10 +-10:2:55 +-10:3:-220 +-10:4:715 +-10:5:-2002 +-10:6:5005 +-10:7:-11440 +-10:8:24310 +-10:9:-48620 +-10:10:92378 +-10:11:-167960 +-10:12:293930 +-10:13:-497420 +-10:14:817190 +-10:15:-1307504 + +# n = -9, k = n - 15 ... n + 15 + +-9:-24:-490314 +-9:-23:319770 +-9:-22:-203490 +-9:-21:125970 +-9:-20:-75582 +-9:-19:43758 +-9:-18:-24310 +-9:-17:12870 +-9:-16:-6435 +-9:-15:3003 +-9:-14:-1287 +-9:-13:495 +-9:-12:-165 +-9:-11:45 +-9:-10:-9 +-9:-9:1 +-9:-8:0 +-9:-7:0 +-9:-6:0 +-9:-5:0 +-9:-4:0 +-9:-3:0 +-9:-2:0 +-9:-1:0 +-9:0:1 +-9:1:-9 +-9:2:45 +-9:3:-165 +-9:4:495 +-9:5:-1287 +-9:6:3003 +-9:7:-6435 +-9:8:12870 +-9:9:-24310 +-9:10:43758 +-9:11:-75582 +-9:12:125970 +-9:13:-203490 +-9:14:319770 +-9:15:-490314 + +# n = -8, k = n - 15 ... n + 15 + +-8:-23:-170544 +-8:-22:116280 +-8:-21:-77520 +-8:-20:50388 +-8:-19:-31824 +-8:-18:19448 +-8:-17:-11440 +-8:-16:6435 +-8:-15:-3432 +-8:-14:1716 +-8:-13:-792 +-8:-12:330 +-8:-11:-120 +-8:-10:36 +-8:-9:-8 +-8:-8:1 +-8:-7:0 +-8:-6:0 +-8:-5:0 +-8:-4:0 +-8:-3:0 +-8:-2:0 +-8:-1:0 +-8:0:1 +-8:1:-8 +-8:2:36 +-8:3:-120 +-8:4:330 +-8:5:-792 +-8:6:1716 +-8:7:-3432 +-8:8:6435 +-8:9:-11440 +-8:10:19448 +-8:11:-31824 +-8:12:50388 +-8:13:-77520 +-8:14:116280 +-8:15:-170544 + +# n = -7, k = n - 15 ... n + 15 + +-7:-22:-54264 +-7:-21:38760 +-7:-20:-27132 +-7:-19:18564 +-7:-18:-12376 +-7:-17:8008 +-7:-16:-5005 +-7:-15:3003 +-7:-14:-1716 +-7:-13:924 +-7:-12:-462 +-7:-11:210 +-7:-10:-84 +-7:-9:28 +-7:-8:-7 +-7:-7:1 +-7:-6:0 +-7:-5:0 +-7:-4:0 +-7:-3:0 +-7:-2:0 +-7:-1:0 +-7:0:1 +-7:1:-7 +-7:2:28 +-7:3:-84 +-7:4:210 +-7:5:-462 +-7:6:924 +-7:7:-1716 +-7:8:3003 +-7:9:-5005 +-7:10:8008 +-7:11:-12376 +-7:12:18564 +-7:13:-27132 +-7:14:38760 +-7:15:-54264 + +# n = -6, k = n - 15 ... n + 15 + +-6:-21:-15504 +-6:-20:11628 +-6:-19:-8568 +-6:-18:6188 +-6:-17:-4368 +-6:-16:3003 +-6:-15:-2002 +-6:-14:1287 +-6:-13:-792 +-6:-12:462 +-6:-11:-252 +-6:-10:126 +-6:-9:-56 +-6:-8:21 +-6:-7:-6 +-6:-6:1 +-6:-5:0 +-6:-4:0 +-6:-3:0 +-6:-2:0 +-6:-1:0 +-6:0:1 +-6:1:-6 +-6:2:21 +-6:3:-56 +-6:4:126 +-6:5:-252 +-6:6:462 +-6:7:-792 +-6:8:1287 +-6:9:-2002 +-6:10:3003 +-6:11:-4368 +-6:12:6188 +-6:13:-8568 +-6:14:11628 +-6:15:-15504 + +# n = -5, k = n - 15 ... n + 15 + +-5:-20:-3876 +-5:-19:3060 +-5:-18:-2380 +-5:-17:1820 +-5:-16:-1365 +-5:-15:1001 +-5:-14:-715 +-5:-13:495 +-5:-12:-330 +-5:-11:210 +-5:-10:-126 +-5:-9:70 +-5:-8:-35 +-5:-7:15 +-5:-6:-5 +-5:-5:1 +-5:-4:0 +-5:-3:0 +-5:-2:0 +-5:-1:0 +-5:0:1 +-5:1:-5 +-5:2:15 +-5:3:-35 +-5:4:70 +-5:5:-126 +-5:6:210 +-5:7:-330 +-5:8:495 +-5:9:-715 +-5:10:1001 +-5:11:-1365 +-5:12:1820 +-5:13:-2380 +-5:14:3060 +-5:15:-3876 + +# n = -4, k = n - 15 ... n + 15 + +-4:-19:-816 +-4:-18:680 +-4:-17:-560 +-4:-16:455 +-4:-15:-364 +-4:-14:286 +-4:-13:-220 +-4:-12:165 +-4:-11:-120 +-4:-10:84 +-4:-9:-56 +-4:-8:35 +-4:-7:-20 +-4:-6:10 +-4:-5:-4 +-4:-4:1 +-4:-3:0 +-4:-2:0 +-4:-1:0 +-4:0:1 +-4:1:-4 +-4:2:10 +-4:3:-20 +-4:4:35 +-4:5:-56 +-4:6:84 +-4:7:-120 +-4:8:165 +-4:9:-220 +-4:10:286 +-4:11:-364 +-4:12:455 +-4:13:-560 +-4:14:680 +-4:15:-816 + +# n = -3, k = n - 15 ... n + 15 + +-3:-18:-136 +-3:-17:120 +-3:-16:-105 +-3:-15:91 +-3:-14:-78 +-3:-13:66 +-3:-12:-55 +-3:-11:45 +-3:-10:-36 +-3:-9:28 +-3:-8:-21 +-3:-7:15 +-3:-6:-10 +-3:-5:6 +-3:-4:-3 +-3:-3:1 +-3:-2:0 +-3:-1:0 +-3:0:1 +-3:1:-3 +-3:2:6 +-3:3:-10 +-3:4:15 +-3:5:-21 +-3:6:28 +-3:7:-36 +-3:8:45 +-3:9:-55 +-3:10:66 +-3:11:-78 +-3:12:91 +-3:13:-105 +-3:14:120 +-3:15:-136 + +# n = -2, k = n - 15 ... n + 15 + +-2:-17:-16 +-2:-16:15 +-2:-15:-14 +-2:-14:13 +-2:-13:-12 +-2:-12:11 +-2:-11:-10 +-2:-10:9 +-2:-9:-8 +-2:-8:7 +-2:-7:-6 +-2:-6:5 +-2:-5:-4 +-2:-4:3 +-2:-3:-2 +-2:-2:1 +-2:-1:0 +-2:0:1 +-2:1:-2 +-2:2:3 +-2:3:-4 +-2:4:5 +-2:5:-6 +-2:6:7 +-2:7:-8 +-2:8:9 +-2:9:-10 +-2:10:11 +-2:11:-12 +-2:12:13 +-2:13:-14 +-2:14:15 +-2:15:-16 + +# n = -1, k = n - 15 ... n + 15 + +-1:-16:-1 +-1:-15:1 +-1:-14:-1 +-1:-13:1 +-1:-12:-1 +-1:-11:1 +-1:-10:-1 +-1:-9:1 +-1:-8:-1 +-1:-7:1 +-1:-6:-1 +-1:-5:1 +-1:-4:-1 +-1:-3:1 +-1:-2:-1 +-1:-1:1 +-1:0:1 +-1:1:-1 +-1:2:1 +-1:3:-1 +-1:4:1 +-1:5:-1 +-1:6:1 +-1:7:-1 +-1:8:1 +-1:9:-1 +-1:10:1 +-1:11:-1 +-1:12:1 +-1:13:-1 +-1:14:1 +-1:15:-1 + +# n = 0, k = n - 15 ... n + 15 + +0:-15:0 +0:-14:0 +0:-13:0 +0:-12:0 +0:-11:0 +0:-10:0 +0:-9:0 +0:-8:0 +0:-7:0 +0:-6:0 +0:-5:0 +0:-4:0 +0:-3:0 +0:-2:0 +0:-1:0 +0:0:1 +0:1:0 +0:2:0 +0:3:0 +0:4:0 +0:5:0 +0:6:0 +0:7:0 +0:8:0 +0:9:0 +0:10:0 +0:11:0 +0:12:0 +0:13:0 +0:14:0 +0:15:0 + +# n = 1, k = n - 15 ... n + 15 + +1:-15:0 +1:-14:0 +1:-13:0 +1:-12:0 +1:-11:0 +1:-10:0 +1:-9:0 +1:-8:0 +1:-7:0 +1:-6:0 +1:-5:0 +1:-4:0 +1:-3:0 +1:-2:0 +1:-1:0 +1:0:1 +1:1:1 +1:2:0 +1:3:0 +1:4:0 +1:5:0 +1:6:0 +1:7:0 +1:8:0 +1:9:0 +1:10:0 +1:11:0 +1:12:0 +1:13:0 +1:14:0 +1:15:0 +1:16:0 + +# n = 2, k = n - 15 ... n + 15 + +2:-15:0 +2:-14:0 +2:-13:0 +2:-12:0 +2:-11:0 +2:-10:0 +2:-9:0 +2:-8:0 +2:-7:0 +2:-6:0 +2:-5:0 +2:-4:0 +2:-3:0 +2:-2:0 +2:-1:0 +2:0:1 +2:1:2 +2:2:1 +2:3:0 +2:4:0 +2:5:0 +2:6:0 +2:7:0 +2:8:0 +2:9:0 +2:10:0 +2:11:0 +2:12:0 +2:13:0 +2:14:0 +2:15:0 +2:16:0 +2:17:0 + +# n = 3, k = n - 15 ... n + 15 + +3:-15:0 +3:-14:0 +3:-13:0 +3:-12:0 +3:-11:0 +3:-10:0 +3:-9:0 +3:-8:0 +3:-7:0 +3:-6:0 +3:-5:0 +3:-4:0 +3:-3:0 +3:-2:0 +3:-1:0 +3:0:1 +3:1:3 +3:2:3 +3:3:1 +3:4:0 +3:5:0 +3:6:0 +3:7:0 +3:8:0 +3:9:0 +3:10:0 +3:11:0 +3:12:0 +3:13:0 +3:14:0 +3:15:0 +3:16:0 +3:17:0 +3:18:0 + +# n = 4, k = n - 15 ... n + 15 + +4:-15:0 +4:-14:0 +4:-13:0 +4:-12:0 +4:-11:0 +4:-10:0 +4:-9:0 +4:-8:0 +4:-7:0 +4:-6:0 +4:-5:0 +4:-4:0 +4:-3:0 +4:-2:0 +4:-1:0 +4:0:1 +4:1:4 +4:2:6 +4:3:4 +4:4:1 +4:5:0 +4:6:0 +4:7:0 +4:8:0 +4:9:0 +4:10:0 +4:11:0 +4:12:0 +4:13:0 +4:14:0 +4:15:0 +4:16:0 +4:17:0 +4:18:0 +4:19:0 + +# n = 5, k = n - 15 ... n + 15 + +5:-15:0 +5:-14:0 +5:-13:0 +5:-12:0 +5:-11:0 +5:-10:0 +5:-9:0 +5:-8:0 +5:-7:0 +5:-6:0 +5:-5:0 +5:-4:0 +5:-3:0 +5:-2:0 +5:-1:0 +5:0:1 +5:1:5 +5:2:10 +5:3:10 +5:4:5 +5:5:1 +5:6:0 +5:7:0 +5:8:0 +5:9:0 +5:10:0 +5:11:0 +5:12:0 +5:13:0 +5:14:0 +5:15:0 +5:16:0 +5:17:0 +5:18:0 +5:19:0 +5:20:0 + +# n = 6, k = n - 15 ... n + 15 + +6:-15:0 +6:-14:0 +6:-13:0 +6:-12:0 +6:-11:0 +6:-10:0 +6:-9:0 +6:-8:0 +6:-7:0 +6:-6:0 +6:-5:0 +6:-4:0 +6:-3:0 +6:-2:0 +6:-1:0 +6:0:1 +6:1:6 +6:2:15 +6:3:20 +6:4:15 +6:5:6 +6:6:1 +6:7:0 +6:8:0 +6:9:0 +6:10:0 +6:11:0 +6:12:0 +6:13:0 +6:14:0 +6:15:0 +6:16:0 +6:17:0 +6:18:0 +6:19:0 +6:20:0 +6:21:0 + +# n = 7, k = n - 15 ... n + 15 + +7:-15:0 +7:-14:0 +7:-13:0 +7:-12:0 +7:-11:0 +7:-10:0 +7:-9:0 +7:-8:0 +7:-7:0 +7:-6:0 +7:-5:0 +7:-4:0 +7:-3:0 +7:-2:0 +7:-1:0 +7:0:1 +7:1:7 +7:2:21 +7:3:35 +7:4:35 +7:5:21 +7:6:7 +7:7:1 +7:8:0 +7:9:0 +7:10:0 +7:11:0 +7:12:0 +7:13:0 +7:14:0 +7:15:0 +7:16:0 +7:17:0 +7:18:0 +7:19:0 +7:20:0 +7:21:0 +7:22:0 + +# n = 8, k = n - 15 ... n + 15 + +8:-15:0 +8:-14:0 +8:-13:0 +8:-12:0 +8:-11:0 +8:-10:0 +8:-9:0 +8:-8:0 +8:-7:0 +8:-6:0 +8:-5:0 +8:-4:0 +8:-3:0 +8:-2:0 +8:-1:0 +8:0:1 +8:1:8 +8:2:28 +8:3:56 +8:4:70 +8:5:56 +8:6:28 +8:7:8 +8:8:1 +8:9:0 +8:10:0 +8:11:0 +8:12:0 +8:13:0 +8:14:0 +8:15:0 +8:16:0 +8:17:0 +8:18:0 +8:19:0 +8:20:0 +8:21:0 +8:22:0 +8:23:0 + +# n = 9, k = n - 15 ... n + 15 + +9:-15:0 +9:-14:0 +9:-13:0 +9:-12:0 +9:-11:0 +9:-10:0 +9:-9:0 +9:-8:0 +9:-7:0 +9:-6:0 +9:-5:0 +9:-4:0 +9:-3:0 +9:-2:0 +9:-1:0 +9:0:1 +9:1:9 +9:2:36 +9:3:84 +9:4:126 +9:5:126 +9:6:84 +9:7:36 +9:8:9 +9:9:1 +9:10:0 +9:11:0 +9:12:0 +9:13:0 +9:14:0 +9:15:0 +9:16:0 +9:17:0 +9:18:0 +9:19:0 +9:20:0 +9:21:0 +9:22:0 +9:23:0 +9:24:0 + +# n = 10, k = n - 15 ... n + 15 + +10:-15:0 +10:-14:0 +10:-13:0 +10:-12:0 +10:-11:0 +10:-10:0 +10:-9:0 +10:-8:0 +10:-7:0 +10:-6:0 +10:-5:0 +10:-4:0 +10:-3:0 +10:-2:0 +10:-1:0 +10:0:1 +10:1:10 +10:2:45 +10:3:120 +10:4:210 +10:5:252 +10:6:210 +10:7:120 +10:8:45 +10:9:10 +10:10:1 +10:11:0 +10:12:0 +10:13:0 +10:14:0 +10:15:0 +10:16:0 +10:17:0 +10:18:0 +10:19:0 +10:20:0 +10:21:0 +10:22:0 +10:23:0 +10:24:0 +10:25:0 + +# n = 11, k = n - 15 ... n + 15 + +11:-15:0 +11:-14:0 +11:-13:0 +11:-12:0 +11:-11:0 +11:-10:0 +11:-9:0 +11:-8:0 +11:-7:0 +11:-6:0 +11:-5:0 +11:-4:0 +11:-3:0 +11:-2:0 +11:-1:0 +11:0:1 +11:1:11 +11:2:55 +11:3:165 +11:4:330 +11:5:462 +11:6:462 +11:7:330 +11:8:165 +11:9:55 +11:10:11 +11:11:1 +11:12:0 +11:13:0 +11:14:0 +11:15:0 +11:16:0 +11:17:0 +11:18:0 +11:19:0 +11:20:0 +11:21:0 +11:22:0 +11:23:0 +11:24:0 +11:25:0 +11:26:0 + +# n = 12, k = n - 15 ... n + 15 + +12:-15:0 +12:-14:0 +12:-13:0 +12:-12:0 +12:-11:0 +12:-10:0 +12:-9:0 +12:-8:0 +12:-7:0 +12:-6:0 +12:-5:0 +12:-4:0 +12:-3:0 +12:-2:0 +12:-1:0 +12:0:1 +12:1:12 +12:2:66 +12:3:220 +12:4:495 +12:5:792 +12:6:924 +12:7:792 +12:8:495 +12:9:220 +12:10:66 +12:11:12 +12:12:1 +12:13:0 +12:14:0 +12:15:0 +12:16:0 +12:17:0 +12:18:0 +12:19:0 +12:20:0 +12:21:0 +12:22:0 +12:23:0 +12:24:0 +12:25:0 +12:26:0 +12:27:0 + +# n = 13, k = n - 15 ... n + 15 + +13:-15:0 +13:-14:0 +13:-13:0 +13:-12:0 +13:-11:0 +13:-10:0 +13:-9:0 +13:-8:0 +13:-7:0 +13:-6:0 +13:-5:0 +13:-4:0 +13:-3:0 +13:-2:0 +13:-1:0 +13:0:1 +13:1:13 +13:2:78 +13:3:286 +13:4:715 +13:5:1287 +13:6:1716 +13:7:1716 +13:8:1287 +13:9:715 +13:10:286 +13:11:78 +13:12:13 +13:13:1 +13:14:0 +13:15:0 +13:16:0 +13:17:0 +13:18:0 +13:19:0 +13:20:0 +13:21:0 +13:22:0 +13:23:0 +13:24:0 +13:25:0 +13:26:0 +13:27:0 +13:28:0 + +# n = 14, k = n - 15 ... n + 15 + +14:-15:0 +14:-14:0 +14:-13:0 +14:-12:0 +14:-11:0 +14:-10:0 +14:-9:0 +14:-8:0 +14:-7:0 +14:-6:0 +14:-5:0 +14:-4:0 +14:-3:0 +14:-2:0 +14:-1:0 +14:0:1 +14:1:14 +14:2:91 +14:3:364 +14:4:1001 +14:5:2002 +14:6:3003 +14:7:3432 +14:8:3003 +14:9:2002 +14:10:1001 +14:11:364 +14:12:91 +14:13:14 +14:14:1 +14:15:0 +14:16:0 +14:17:0 +14:18:0 +14:19:0 +14:20:0 +14:21:0 +14:22:0 +14:23:0 +14:24:0 +14:25:0 +14:26:0 +14:27:0 +14:28:0 +14:29:0 + +# n = 15, k = n - 15 ... n + 15 + +15:-15:0 +15:-14:0 +15:-13:0 +15:-12:0 +15:-11:0 +15:-10:0 +15:-9:0 +15:-8:0 +15:-7:0 +15:-6:0 +15:-5:0 +15:-4:0 +15:-3:0 +15:-2:0 +15:-1:0 +15:0:1 +15:1:15 +15:2:105 +15:3:455 +15:4:1365 +15:5:3003 +15:6:5005 +15:7:6435 +15:8:6435 +15:9:5005 +15:10:3003 +15:11:1365 +15:12:455 +15:13:105 +15:14:15 +15:15:1 +15:16:0 +15:17:0 +15:18:0 +15:19:0 +15:20:0 +15:21:0 +15:22:0 +15:23:0 +15:24:0 +15:25:0 +15:26:0 +15:27:0 +15:28:0 +15:29:0 +15:30:0 diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/t/from_base-mbi.t b/gnu/usr.bin/perl/cpan/Math-BigInt/t/from_base-mbi.t new file mode 100644 index 00000000000..88912cba717 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/t/from_base-mbi.t @@ -0,0 +1,126 @@ +#!perl + +use strict; +use warnings; + +use Test::More tests => 176; + +my $class; + +BEGIN { $class = 'Math::BigInt'; } +BEGIN { use_ok($class); } + +my @data; + +while (<DATA>) { + s/#.*$//; # remove comments + s/\s+$//; # remove trailing whitespace + next unless length; # skip empty lines + + my @in = split /:/; + my $out = pop @in; + + # As class method. + + { + my $x; + my $test = qq|\$x = $class -> from_base("$in[0]", $in[1]|; + $test .= qq|, "$in[2]"| if @in == 3; + $test .= qq|);|; + + eval $test; + #die $@ if $@; # this should never happen + die "\nThe following test died when eval()'ed. This indicates a ", + "broken test\n\n $test\n\nThe error message was\n\n $@\n" + if $@; + + subtest $test, sub { + plan tests => 2, + + is(ref($x), $class, "output arg is a $class"); + is($x, $out, 'output arg has the right value'); + }; + } + + # As instance method. + + { + for my $str ("-1", "0", "1", "-inf", "+inf", "NaN") { + my $x; + my $test = qq|\$x = $class -> new("$str");|; + $test .= qq| \$x -> from_base("$in[0]", $in[1]|; + $test .= qq|, "$in[2]"| if @in == 3; + $test .= qq|);|; + + eval $test; + #die $@ if $@; # this should never happen + die "\nThe following test died when eval()'ed. This indicates a ", + "broken test\n\n $test\n\nThe error message was\n\n $@\n" + if $@; + + subtest $test, sub { + plan tests => 2, + + is(ref($x), $class, "output arg is a $class"); + is($x, $out, 'output arg has the right value'); + }; + } + } +} + +__END__ + +# Base 2 + +11111010:2:250 +11111010:2:01:250 + +# Base 8 + +372:8:250 +372:8:01234567:250 + +# Base 10 (in the last case, use a truncted collation sequence that does not +# include unused characters) + +250:10:250 +250:10:0123456789:250 +250:10:012345:250 + +# Base 16 + +fa:16:250 +FA:16:250 +fa:16:0123456789abcdef:250 + +# Base 3 + +100021:3:250 +100021:3:012:250 + +/|-:3:-/|:15 + +# Base 4 + +3322:4:250 +3322:4:0123:250 + +# Base 5 + +2000:5:250 +2000:5:01234:250 +caaa:5:abcde:250 + +# when base is less than or equal to 36, case is ignored + +6Y:36:250 +6y:36:250 + +6S:37:250 +7H:37:276 + +121:3:16 + +XYZ:36:44027 + +Why:62:125734 diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/t/to_base-mbi.t b/gnu/usr.bin/perl/cpan/Math-BigInt/t/to_base-mbi.t new file mode 100644 index 00000000000..6ffee61896b --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/t/to_base-mbi.t @@ -0,0 +1,93 @@ +#!perl + +use strict; +use warnings; + +use Test::More tests => 24; + +my $class; + +BEGIN { $class = 'Math::BigInt'; } +BEGIN { use_ok($class); } + +while (<DATA>) { + s/#.*$//; # remove comments + s/\s+$//; # remove trailing whitespace + next unless length; # skip empty lines + + my @in = split /:/; + my $out = pop @in; + + my ($x, $xo, $y); + my $test = qq|\$x = $class -> new("$in[0]");|; + $test .= qq| \$xo = \$x -> copy();|; + $test .= qq| \$y = \$x -> to_base($in[1]|; + $test .= qq|, "$in[2]"| if @in == 3; + $test .= qq|);|; + + eval $test; + #die $@ if $@; # this should never happen + die "\nThe following test died when eval()'ed. This indicates a ", + "broken test\n\n $test\n\nThe error message was\n\n $@\n" + if $@; + + subtest $test, sub { + plan tests => 2, + + is($x, $xo, "invocand object was not changed"); + is($y, $out, 'output arg has the right value'); + }; +} + +__END__ + +# Base 2 + +250:2:11111010 +250:2:01:11111010 + +# Base 8 + +250:8:372 +250:8:01234567:372 + +# Base 10 (in the last case, use a truncted collation sequence that does not +# include unused characters) + +250:10:250 +250:10:0123456789:250 +250:10:012345:250 + +# Base 16 + +250:16:FA +250:16:0123456789abcdef:fa +250:16:0123456789abcdef:fa + +# Base 3 + +250:3:100021 +250:3:012:100021 + +15:3:-/|:/|- + +# Base 4 + +250:4:3322 +250:4:0123:3322 + +# Base 5 + +250:5:2000 +250:5:01234:2000 +250:5:abcde:caaa + +# Other bases + +250:36:6Y + +250:37:6S + +16:3:121 +44027:36:XYZ +125734:62:Why diff --git a/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm b/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm index 9e69f832300..0c403d41b79 100644 --- a/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm +++ b/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm @@ -1,6 +1,6 @@ package Module::Load; -$VERSION = '0.32'; +$VERSION = '0.34'; use strict; use warnings; @@ -92,8 +92,7 @@ sub _load{ $import = $mod->can('import') ) and ( unshift(@_, $mod), - goto &$import, - return + goto &$import ) ); } @@ -334,6 +333,25 @@ C<Module::Load> cannot do implicit imports, only explicit imports. to import from a module, even if the functions are in that modules' C<@EXPORT>) +=head1 SEE ALSO + +L<Module::Runtime> provides functions for loading modules, +checking the validity of a module name, +converting a module name to partial C<.pm> path, +and related utility functions. + +L<"require" in perlfunc|https://metacpan.org/pod/perlfunc#require> +and +L<"use" in perlfunc|https://metacpan.org/pod/perlfunc#use>. + +L<Mojo::Loader> is a "class loader and plugin framework", +and is included in the +L<Mojolicious|https://metacpan.org/release/Mojolicious> distribution. + +L<Module::Loader> is a module for finding and loading modules +in a given namespace, inspired by C<Mojo::Loader>. + + =head1 ACKNOWLEDGEMENTS Thanks to Jonas B. Nielsen for making explicit imports work. diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/GeneratePackage.pm b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/GeneratePackage.pm index 07c92d37133..2a910f89bfe 100644 --- a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/GeneratePackage.pm +++ b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/GeneratePackage.pm @@ -3,7 +3,7 @@ use warnings; package GeneratePackage; # vim:ts=8:sw=2:et:sta:sts=2 -use base 'Exporter'; +our @ISA = ('Exporter'); our @EXPORT = qw(tmpdir generate_file); use Cwd; @@ -12,14 +12,27 @@ use File::Path; use File::Temp; use IO::File; +BEGIN { + my $cwd = File::Spec->rel2abs(Cwd::cwd); + sub _original_cwd { return $cwd } +} + +my @tmpdirs; sub tmpdir { - File::Temp::tempdir( + my (@args) = @_; + my $tmpdir = File::Temp::tempdir( 'MMD-XXXXXXXX', - CLEANUP => 1, - DIR => ($ENV{PERL_CORE} ? File::Spec->rel2abs(Cwd::cwd) : File::Spec->tmpdir), + CLEANUP => 0, + DIR => ($ENV{PERL_CORE} ? _original_cwd : File::Spec->tmpdir), + @args, ); + Test::More::note "using temp dir $tmpdir"; + push @tmpdirs, $tmpdir; + return $tmpdir; } +my $tmp; + sub generate_file { my ($dir, $rel_filename, $content) = @_; @@ -35,4 +48,14 @@ sub generate_file { return $abs_filename; } +END { + die "tests failed; leaving temp dir $tmp behind" + if $ENV{AUTHOR_TESTING} and not Test::Builder->new->is_passing; + chdir _original_cwd; + foreach my $tmp (@tmpdirs) { + Test::More::note "removing temp dir $tmp"; + File::Path::rmtree($tmp); + } +} + 1; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Formatter.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Formatter.pm index 82a8eead675..3c29ffdaf21 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Formatter.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Formatter.pm @@ -2,7 +2,7 @@ package Test::Builder::Formatter; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) } @@ -95,7 +95,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm index b972a49f3ef..8ac230f71c9 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm @@ -2,7 +2,7 @@ package Test::Builder::TodoDiag; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) } @@ -58,7 +58,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2.pm index b3b6d3c662b..98c5391da9d 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2.pm @@ -2,7 +2,7 @@ package Test2; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; 1; @@ -203,7 +203,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API.pm index f5caaa6947b..8193b073661 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API.pm @@ -9,7 +9,7 @@ BEGIN { $ENV{TEST2_ACTIVE} = 1; } -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; my $INST; @@ -70,7 +70,7 @@ use Test2::Event::Subtest(); use Carp qw/carp croak confess/; use Scalar::Util qw/blessed weaken/; -use Test2::Util qw/get_tid clone_io pkg_to_file/; +use Test2::Util qw/get_tid clone_io pkg_to_file gen_uid/; our @EXPORT_OK = qw{ context release @@ -99,6 +99,8 @@ our @EXPORT_OK = qw{ test2_add_uuid_via + test2_add_callback_testing_done + test2_add_callback_context_aquire test2_add_callback_context_acquire test2_add_callback_context_init @@ -127,7 +129,6 @@ our @EXPORT_OK = qw{ test2_ipc_set_pending test2_ipc_get_timeout test2_ipc_set_timeout - test2_ipc_enable_shm test2_formatter test2_formatters @@ -180,6 +181,22 @@ sub test2_no_wait { $INST->no_wait; } +sub test2_add_callback_testing_done { + my $cb = shift; + + test2_add_callback_post_load(sub { + my $stack = test2_stack(); + $stack->top; # Insure we have a hub + my ($hub) = Test2::API::test2_stack->all; + + $hub->set_active(1); + + $hub->follow_up($cb); + }); + + return; +} + sub test2_add_callback_context_acquire { $INST->add_context_acquire_callback(@_) } sub test2_add_callback_context_aquire { $INST->add_context_acquire_callback(@_) } sub test2_add_callback_context_init { $INST->add_context_init_callback(@_) } @@ -213,7 +230,7 @@ sub test2_ipc_get_pending { $INST->get_ipc_pending } sub test2_ipc_set_pending { $INST->set_ipc_pending(@_) } sub test2_ipc_set_timeout { $INST->set_ipc_timeout(@_) } sub test2_ipc_get_timeout { $INST->ipc_timeout() } -sub test2_ipc_enable_shm { $INST->ipc_enable_shm } +sub test2_ipc_enable_shm { 0 } sub test2_formatter { if ($ENV{T2_FORMATTER} && $ENV{T2_FORMATTER} =~ m/^(\+)?(.*)$/) { @@ -289,7 +306,6 @@ sub no_context(&;$) { }; my $UUID_VIA = _add_uuid_via_ref(); -my $CID = 1; sub context { # We need to grab these before anything else to ensure they are not # changed. @@ -369,7 +385,7 @@ sub context { frame => [$pkg, $file, $line, $sub], pid => $$, tid => get_tid(), - cid => 'C' . $CID++, + cid => gen_uid(), hid => $hid, nested => $hub->{nested}, buffered => $hub->{buffered}, @@ -1281,7 +1297,7 @@ to turn this off. These functions return the filehandles that test output should be written to. They are primarily useful when writing a custom formatter and code that turns -events into actual output (TAP, etc.) They will return a dupe of the original +events into actual output (TAP, etc.). They will return a dupe of the original filehandles that formatted output can be sent to regardless of whatever state the currently running test may have left STDOUT and STDERR in. @@ -1326,6 +1342,22 @@ Add a callback that will be called when Test2 is finished loading. This means the callback will be run once, the first time a context is obtained. If Test2 has already finished loading then the callback will be run immediately. +=item test2_add_callback_testing_done(sub { ... }) + +This adds your coderef as a follow-up to the root hub after Test2 is finished loading. + +This is essentially a helper to do the following: + + test2_add_callback_post_load(sub { + my $stack = test2_stack(); + $stack->top; # Insure we have a hub + my ($hub) = Test2::API::test2_stack->all; + + $hub->set_active(1); + + $hub->follow_up(sub { ... }); # <-- Your coderef here + }); + =item test2_add_callback_context_acquire(sub { ... }) Add a callback that will be called every time someone tries to acquire a @@ -1441,8 +1473,7 @@ Turn off IPC polling. =item test2_ipc_enable_shm() -Turn on IPC SHM. Only some IPC drivers use this, and most will turn it on -themselves. +Legacy, this is currently a no-op that returns 0; =item test2_ipc_set_pending($uniq_val) @@ -1557,7 +1588,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Breakage.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Breakage.pm index 08aee9dcb1a..ffcf1be582f 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Breakage.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Breakage.pm @@ -2,7 +2,7 @@ package Test2::API::Breakage; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::Util qw/pkg_to_file/; @@ -168,7 +168,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Context.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Context.pm index 6141a43ff8e..9cb1cfca723 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Context.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Context.pm @@ -2,7 +2,7 @@ package Test2::API::Context; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/confess croak/; @@ -325,7 +325,15 @@ sub fail { "Test2::Event::Fail" ); - $e->add_info({tag => 'DIAG', debug => 1, details => $_}) for @diag; + for my $msg (@diag) { + if (ref($msg) eq 'Test2::EventFacet::Info::Table') { + $e->add_info({tag => 'DIAG', debug => 1, $msg->info_args}); + } + else { + $e->add_info({tag => 'DIAG', debug => 1, details => $msg}); + } + } + $self->{+HUB}->send($e); return $e; } @@ -342,7 +350,15 @@ sub fail_and_release { "Test2::Event::Fail" ); - $e->add_info({tag => 'DIAG', debug => 1, details => $_}) for @diag; + for my $msg (@diag) { + if (ref($msg) eq 'Test2::EventFacet::Info::Table') { + $e->add_info({tag => 'DIAG', debug => 1, $msg->info_args}); + } + else { + $e->add_info({tag => 'DIAG', debug => 1, details => $msg}); + } + } + $self->{+HUB}->send($e); $self->release; return 0; @@ -490,7 +506,14 @@ should always use C<context()> which is exported by the L<Test2::API> module. sub my_ok { my ($bool, $name) = @_; my $ctx = context(); - $ctx->ok($bool, $name); + + if ($bool) { + $ctx->pass($name); + } + else { + $ctx->fail($name); + } + $ctx->release; # You MUST do this! return $bool; } @@ -715,6 +738,10 @@ write more clear and compact code. This lets you send an L<Test2::Event::Fail> event. You may optionally provide a C<$name> and C<@diagnostics> messages. +Diagnostics messages can be simple strings, data structures, or instances of +L<Test2::EventFacet::Info::Table> (which are converted inline into the +L<Test2::EventFacet::Info> structure). + =item my $false = $ctx->fail_and_release() =item my $false = $ctx->fail_and_release($name) @@ -760,7 +787,8 @@ failure. If you do not want automatic diagnostics you should use the C<send_event()> method directly. The third argument C<\@on_fail>) is an optional set of diagnostics to be sent in -the event of a test failure. +the event of a test failure. Unlike with C<fail()> these diagnostics must be +plain strings, data structures are not supported. =item $event = $ctx->note($message) @@ -975,7 +1003,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Instance.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Instance.pm index 0522dd77aa4..1cf224cf063 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Instance.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Instance.pm @@ -2,8 +2,7 @@ package Test2::API::Instance; use strict; use warnings; -our $VERSION = '1.302133'; - +our $VERSION = '1.302162'; our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/; use Carp qw/confess carp/; @@ -26,9 +25,6 @@ use Test2::Util::HashBase qw{ -preload ipc_disabled - ipc_shm_size - ipc_shm_last - ipc_shm_id ipc_polling ipc_drivers ipc_timeout @@ -216,7 +212,6 @@ sub _finalize { for my $driver (@{$self->{+IPC_DRIVERS}}) { next unless $driver->can('is_viable') && $driver->is_viable; $self->{+IPC} = $driver->new or next; - $self->ipc_enable_shm if $self->{+IPC}->use_shm; return; } @@ -366,91 +361,36 @@ sub enable_ipc_polling { # $_[0] is a context object sub { return unless $self->{+IPC_POLLING}; - return $_[0]->{hub}->cull unless $self->{+IPC_SHM_ID}; - - my $val; - if(shmread($self->{+IPC_SHM_ID}, $val, 0, $self->{+IPC_SHM_SIZE})) { - return if $val eq $self->{+IPC_SHM_LAST}; - $self->{+IPC_SHM_LAST} = $val; - } - else { - warn "SHM Read error: $!\n"; - } - - $_[0]->{hub}->cull; + return unless $self->{+IPC}; + return unless $self->{+IPC}->pending(); + return $_[0]->{hub}->cull; } ) unless defined $self->ipc_polling; $self->set_ipc_polling(1); } -sub ipc_enable_shm { +sub get_ipc_pending { my $self = shift; - - return 1 if defined $self->{+IPC_SHM_ID}; - - $self->{+_PID} = $$ unless defined $self->{+_PID}; - $self->{+_TID} = get_tid() unless defined $self->{+_TID}; - - my ($ok, $err) = try { - # SysV IPC can be available but not enabled. - # - # In some systems (*BSD) accessing the SysV IPC APIs without - # them being enabled can cause a SIGSYS. We suppress the SIGSYS - # and then get ENOSYS from the calls. - local $SIG{SYS} = 'IGNORE' if CAN_SIGSYS; - - require IPC::SysV; - - my $ipc_key = IPC::SysV::IPC_PRIVATE(); - my $shm_size = $self->{+IPC}->can('shm_size') ? $self->{+IPC}->shm_size : 64; - my $shm_id = shmget($ipc_key, $shm_size, 0666) or die "Could not get shm: $!"; - - my $initial = 'a' x $shm_size; - shmwrite($shm_id, $initial, 0, $shm_size) or die "Could not write to shm: $!"; - my $val; - shmread($shm_id, $val, 0, $shm_size) or die "Could not read from shm: $!"; - die "Read SHM value does not match the initial value ('$val' vs '$initial')" - unless $val eq $initial; - - $self->{+IPC_SHM_SIZE} = $shm_size; - $self->{+IPC_SHM_ID} = $shm_id; - $self->{+IPC_SHM_LAST} = $initial; - }; - - return $ok; + return -1 unless $self->{+IPC}; + $self->{+IPC}->pending(); } -sub ipc_free_shm { +sub _check_pid { my $self = shift; - - my $id = delete $self->{+IPC_SHM_ID}; - return unless defined $id; - - shmctl($id, IPC::SysV::IPC_RMID(), 0); -} - -sub get_ipc_pending { - my $self = shift; - return -1 unless defined $self->{+IPC_SHM_ID}; - my $val; - shmread($self->{+IPC_SHM_ID}, $val, 0, $self->{+IPC_SHM_SIZE}) or return -1; - return 0 if $val eq $self->{+IPC_SHM_LAST}; - $self->{+IPC_SHM_LAST} = $val; - return 1; + my ($pid) = @_; + return kill(0, $pid); } sub set_ipc_pending { my $self = shift; - - return undef unless defined $self->{+IPC_SHM_ID}; - + return unless $self->{+IPC}; my ($val) = @_; confess "value is required for set_ipc_pending" unless $val; - shmwrite($self->{+IPC_SHM_ID}, $val, 0, $self->{+IPC_SHM_SIZE}); + $self->{+IPC}->set_pending($val); } sub disable_ipc_polling { @@ -517,18 +457,6 @@ sub _ipc_wait { return 255; } -sub DESTROY { - my $self = shift; - - return if $self->{+PRELOAD}; - - return unless defined($self->{+_PID}) && $self->{+_PID} == $$; - return unless defined($self->{+_TID}) && $self->{+_TID} == get_tid(); - - shmctl($self->{+IPC_SHM_ID}, IPC::SysV::IPC_RMID(), 0) - if defined $self->{+IPC_SHM_ID}; -} - sub set_exit { my $self = shift; @@ -740,42 +668,20 @@ This is intended to be called in an C<END { ... }> block. This will look at test state and set $?. This will also call any end callbacks, and wait on child processes/threads. -=item $obj->ipc_enable_shm() - -Turn on SHM for IPC (if possible) - -=item $shm_id = $obj->ipc_shm_id() - -If SHM is enabled for IPC this will be the shm_id for it. - -=item $shm_size = $obj->ipc_shm_size() - -If SHM is enabled for IPC this will be the size of it. - -=item $shm_last_val = $obj->ipc_shm_last() - -If SHM is enabled for IPC this will return the last SHM value seen. - =item $obj->set_ipc_pending($val) -use the IPC SHM to tell other processes and threads there is a pending event. -C<$val> should be a unique value no other thread/process will generate. +Tell other processes and threads there is a pending event. C<$val> should be a +unique value no other thread/process will generate. -B<Note:> This will also make the current process see a pending event. It does -not set C<ipc_shm_last()>, this is important because doing so could hide a -previous change. +B<Note:> This will also make the current process see a pending event. =item $pending = $obj->get_ipc_pending() -This returns -1 if SHM is not enabled for IPC. - -This returns 0 if the SHM value matches the last known value, which means there -are no pending events. +This returns -1 if it is not possible to know. -This returns 1 if the SHM value has changed, which means there are probably -pending events. +This returns 0 if there are no pending events. -When 1 is returned this will set C<< $obj->ipc_shm_last() >>. +This returns 1 if there are pending events. =item $timeout = $obj->ipc_timeout; @@ -906,7 +812,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Stack.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Stack.pm index 8007e1a6540..ffa4ed57f01 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Stack.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/API/Stack.pm @@ -2,7 +2,7 @@ package Test2::API::Stack; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::Hub(); @@ -210,7 +210,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event.pm index 307d49b75e5..598456c1dc3 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event.pm @@ -2,14 +2,14 @@ package Test2::Event; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Scalar::Util qw/blessed reftype/; use Carp qw/croak/; -use Test2::Util::HashBase qw/trace -amnesty uuid -hubs/; +use Test2::Util::HashBase qw/trace -amnesty uuid -_eid -hubs/; use Test2::Util::ExternalMeta qw/meta get_meta set_meta delete_meta/; -use Test2::Util qw(pkg_to_file); +use Test2::Util qw/pkg_to_file gen_uid/; use Test2::EventFacet::About(); use Test2::EventFacet::Amnesty(); @@ -120,6 +120,8 @@ sub add_amnesty { } } +sub eid { $_[0]->{+_EID} ||= gen_uid() } + sub common_facet_data { my $self = shift; @@ -130,6 +132,8 @@ sub common_facet_data { $out{about}->{uuid} = $uuid; } + $out{about}->{eid} = $self->{+_EID} || $self->eid; + if (my $trace = $self->trace) { $out{trace} = { %$trace }; } @@ -764,7 +768,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Bail.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Bail.pm index bfd99ee3aa4..4fa83c4899b 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Bail.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Bail.pm @@ -2,7 +2,7 @@ package Test2::Event::Bail; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -99,7 +99,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Diag.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Diag.pm index f5d3a6a49ea..86617f8afc7 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Diag.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Diag.pm @@ -2,7 +2,7 @@ package Test2::Event::Diag; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -89,7 +89,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Encoding.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Encoding.pm index cd4b28dcbed..12071637af5 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Encoding.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Encoding.pm @@ -2,7 +2,7 @@ package Test2::Event::Encoding; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/croak/; @@ -87,7 +87,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Exception.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Exception.pm index 4ec36c57faa..66bbdb4fb40 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Exception.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Exception.pm @@ -2,7 +2,7 @@ package Test2::Event::Exception; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -103,7 +103,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Fail.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Fail.pm index f243918627f..2577cd93381 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Fail.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Fail.pm @@ -2,7 +2,7 @@ package Test2::Event::Fail; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::EventFacet::Info; @@ -108,7 +108,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Generic.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Generic.pm index b5bf934135c..02619d9a171 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Generic.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Generic.pm @@ -5,7 +5,7 @@ use warnings; use Carp qw/croak/; use Scalar::Util qw/reftype/; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } use Test2::Util::HashBase; @@ -270,7 +270,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Note.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Note.pm index 2fb1d0d6b9d..3dd09998445 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Note.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Note.pm @@ -2,7 +2,7 @@ package Test2::Event::Note; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -87,7 +87,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Ok.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Ok.pm index fb9a8db529b..7a603b40ca5 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Ok.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Ok.pm @@ -2,7 +2,7 @@ package Test2::Event::Ok; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -152,7 +152,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Pass.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Pass.pm index 78fe1b2f3f8..46726234304 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Pass.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Pass.pm @@ -2,7 +2,7 @@ package Test2::Event::Pass; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::EventFacet::Info; @@ -104,7 +104,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Plan.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Plan.pm index a75e14d687e..00b63970f7a 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Plan.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Plan.pm @@ -2,7 +2,7 @@ package Test2::Event::Plan; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -159,7 +159,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Skip.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Skip.pm index 7a2e660f517..07db32932aa 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Skip.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Skip.pm @@ -2,7 +2,7 @@ package Test2::Event::Skip; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } @@ -117,7 +117,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Subtest.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Subtest.pm index 3feb0f10ca7..92e3f6dfa14 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Subtest.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Subtest.pm @@ -2,7 +2,7 @@ package Test2::Event::Subtest; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } use Test2::Util::HashBase qw{subevents buffered subtest_id subtest_uuid}; @@ -150,7 +150,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm index 03f2621c0e5..cf7d773e1f4 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm @@ -2,7 +2,7 @@ package Test2::Event::TAP::Version; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/croak/; @@ -91,7 +91,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/V2.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/V2.pm index 86a44d4c281..020cf2348e6 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/V2.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/V2.pm @@ -2,7 +2,7 @@ package Test2::Event::V2; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Scalar::Util qw/reftype/; use Carp qw/croak/; @@ -228,7 +228,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Waiting.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Waiting.pm index 58b583fd5ea..4b790a6ff92 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Waiting.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Event/Waiting.pm @@ -2,7 +2,7 @@ package Test2::Event::Waiting; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } @@ -66,7 +66,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet.pm index 619d369120c..d9fb03f4518 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet.pm @@ -2,7 +2,7 @@ package Test2::EventFacet; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::Util::HashBase qw/-details/; use Carp qw/croak/; @@ -83,7 +83,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/About.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/About.pm index fe1d30eca05..fc36d2766a8 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/About.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/About.pm @@ -2,10 +2,10 @@ package Test2::EventFacet::About; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } -use Test2::Util::HashBase qw{ -package -no_display -uuid }; +use Test2::Util::HashBase qw{ -package -no_display -uuid -eid }; 1; @@ -51,6 +51,12 @@ True if the event should be skipped by formatters. Will be set to a uuid if uuid tagging was enabled. +=item $uuid = $about->{eid} + +=item $uuid = $about->eid() + +A unique (for the test job) identifier for the event. + =back =head1 SOURCE @@ -76,7 +82,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm index 9ef227f1669..ac72cf3890c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Amnesty; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; sub is_list { 1 } @@ -81,7 +81,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm index 090860aa0bb..a11aef15691 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Assert; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -pass -no_debug -number }; @@ -83,7 +83,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm index b52718df557..6ea0eaef404 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Control; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -global -terminate -halt -has_callback -encoding }; @@ -90,7 +90,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm index 306dc310d88..4a21ef7e286 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Error; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; sub facet_key { 'errors' } sub is_list { 1 } @@ -83,7 +83,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm index 03c55530544..40b9d658026 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Hub; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; sub is_list { 1 } sub facet_key { 'hubs' } @@ -20,7 +20,7 @@ __END__ =head1 NAME -Test2::EventFacet::Hub +Test2::EventFacet::Hub - Facet for the hubs an event passes through. =head1 DESCRIPTION @@ -99,7 +99,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm index 805cab1ba97..c382049480d 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm @@ -2,12 +2,12 @@ package Test2::EventFacet::Info; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; sub is_list { 1 } BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } -use Test2::Util::HashBase qw{-tag -debug -important}; +use Test2::Util::HashBase qw{-tag -debug -important -table}; 1; @@ -42,6 +42,36 @@ Human readable string or data structure, this is the information to display. Formatters are free to render the structures however they please. This may contain a blessed object. +If the C<table> attribute (see below) is set then a renderer may choose to +display the table instead of the details. + +=item $structure = $info->{table} + +=item $structure = $info->table() + +If the data the C<info> facet needs to convey can be represented as a table +then the data may be placed in this attribute in a more raw form for better +display. The data must also be represented in the C<details> attribute for +renderers which do not support rendering tables directly. + +The table structure: + + my %table = { + header => [ 'column 1 header', 'column 2 header', ... ], # Optional + + rows => [ + ['row 1 column 1', 'row 1, column 2', ... ], + ['row 2 column 1', 'row 2, column 2', ... ], + ... + ], + + # Allow the renderer to hide empty columns when true, Optional + collapse => $BOOL, + + # List by name or number columns that should never be collapsed + no_collapse => \@LIST, + } + =item $short_string = $info->{tag} =item $short_string = $info->tag() @@ -92,7 +122,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm new file mode 100644 index 00000000000..64bd95539a5 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm @@ -0,0 +1,142 @@ +package Test2::EventFacet::Info::Table; +use strict; +use warnings; + +use Carp qw/confess/; + +use Test2::Util::HashBase qw{-header -rows -collapse -no_collapse -as_string}; + +sub init { + my $self = shift; + + confess "Table may not be empty" unless ref($self->{+ROWS}) eq 'ARRAY' && @{$self->{+ROWS}}; + + $self->{+AS_STRING} ||= '<TABLE NOT DISPLAYED>'; +} + +sub as_hash { my $out = +{%{$_[0]}}; delete $out->{as_string}; $out } + +sub info_args { + my $self = shift; + + my $hash = $self->as_hash; + my $desc = $self->as_string; + + return (table => $hash, details => $desc); +} + +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Test2::EventFacet::Info::Table - Intermediary representation of a table. + +=head1 DESCRIPTION + +Intermediary representation of a table for use in specialized +L<Test::API::Context> methods which generate L<Test2::EventFacet::Info> facets. + +=head1 SYNOPSIS + + use Test2::EventFacet::Info::Table; + use Test2::API qw/context/; + + sub my_tool { + my $ctx = context(); + + ... + + $ctx->fail( + $name, + "failure diag message", + Test2::EventFacet::Info::Table->new( + # Required + rows => [['a', 'b'], ['c', 'd'], ...], + + # Strongly Recommended + as_string => "... string to print when table cannot be rendered ...", + + # Optional + header => ['col1', 'col2'], + collapse => $bool, + no_collapse => ['col1', ...], + ), + ); + + ... + + $ctx->release; + } + + my_tool(); + +=head1 ATTRIBUTES + +=over 4 + +=item $header_aref = $t->header() + +=item $rows_aref = $t->rows() + +=item $bool = $t->collapse() + +=item $aref = $t->no_collapse() + +The above are all directly tied to the table hashref structure described in +L<Test2::EventFacet::Info>. + +=item $str = $t->as_string() + +This returns the string form of the table if it was set, otherwise it returns +the string C<< "<TABLE NOT DISPLAYED>" >>. + +=item $href = $t->as_hash() + +This returns the data structure used for tables by L<Test2::EventFacet::Info>. + +=item %args = $t->info_args() + +This returns the arguments that should be used to construct the proper +L<Test2::EventFacet::Info> structure. + + return (table => $t->as_hash(), details => $t->as_string()); + +=back + +=head1 SOURCE + +The source code repository for Test2 can be found at +F<http://github.com/Test-More/test-more/>. + +=head1 MAINTAINERS + +=over 4 + +=item Chad Granum E<lt>exodist@cpan.orgE<gt> + +=back + +=head1 AUTHORS + +=over 4 + +=item Chad Granum E<lt>exodist@cpan.orgE<gt> + +=back + +=head1 COPYRIGHT + +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +See F<http://dev.perl.org/licenses/> + +=cut diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm index 31a4e0c1f8d..dc369ff2b1c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Meta; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use vars qw/$AUTOLOAD/; @@ -94,7 +94,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm index baf66e99a67..d36fd92b27c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Parent; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/confess/; @@ -26,7 +26,7 @@ __END__ =head1 NAME -Test2::EventFacet::Parent - Base class for all event facets. +Test2::EventFacet::Parent - Facet for events contains other events =head1 DESCRIPTION @@ -88,7 +88,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm index 3789bcb5c91..2f14f7d69e0 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Plan; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -count -skip -none }; @@ -84,7 +84,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm index 709a9f61823..07c454365a2 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Render; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; sub is_list { 1 } @@ -53,7 +53,7 @@ Tag that should prefix/identify the main text. Optional, if the display text was generated from another facet this should state what facet it was. -=item $mode = $render->[#]->mode{} +=item $mode = $render->[#]->{mode} =item $mode = $render->[#]->mode() @@ -96,7 +96,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm index 280258c6aa5..34a3fce7ad0 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm @@ -2,11 +2,11 @@ package Test2::EventFacet::Trace; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } -use Test2::Util qw/get_tid pkg_to_file/; +use Test2::Util qw/get_tid pkg_to_file gen_uid/; use Carp qw/confess/; use Test2::Util::HashBase qw{^frame ^pid ^tid ^cid -hid -nested details -buffered -uuid -huuid}; @@ -24,8 +24,10 @@ sub init { $_[0]->{+DETAILS} = delete $_[0]->{detail} if $_[0]->{detail}; - $_[0]->{+PID} = $$ unless defined $_[0]->{+PID}; - $_[0]->{+TID} = get_tid() unless defined $_[0]->{+TID}; + unless (defined($_[0]->{+PID}) || defined($_[0]->{+TID}) || defined($_[0]->{+CID})) { + $_[0]->{+PID} = $$ unless defined $_[0]->{+PID}; + $_[0]->{+TID} = get_tid() unless defined $_[0]->{+TID}; + } } sub snapshot { @@ -239,11 +241,8 @@ Get the debug-info subroutine name. =item $sig = trace->signature Get a signature string that identifies this trace. This is used to check if -multiple events are related. - -If UUID's are enabled then a uuid is returned. Otherwise the signature includes -pid, tid, file, line number, and the cid which is C<'C\d+'> for traces created -by a context, or C<'T\d+'> for traces created by C<new()>. +multiple events are related. The signature includes pid, tid, file, line +number, and the cid. =back @@ -270,7 +269,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter.pm index 0f179e59bcb..c4515d8c41c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter.pm @@ -2,7 +2,7 @@ package Test2::Formatter; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; my %ADDED; @@ -19,6 +19,8 @@ sub new_root { return $class->new(@_); } +sub supports_tables { 0 } + sub hide_buffered { 1 } sub terminate { } @@ -61,6 +63,8 @@ A formatter is any package or object with a C<write($event, $num)> method. sub finalize { } + sub supports_tables { return $BOOL } + sub new_root { my $class = shift; ... @@ -92,11 +96,14 @@ The C<finalize> method is always the last thing called on the formatter, I<< except when C<terminate> is called for a Bail event >>. It is passed the following arguments: -The C<new_root> method is called when C<Test2::API::Stack> Initializes the root -hub for the first time. Most formatters will simply have this call C<< -$class->new >>, which is the default behavior. Some formatters however may want -to take extra action during construction of the root formatter, this is where -they can do that. +The C<supports_tables> method should be true if the formatter supports directly +rendering table data from the C<info> facets. This is a newer feature and many +older formatters may not support it. When not supported the formatter falls +back to rendering C<detail> instead of the C<table> data. + +The C<new_root> method is used when constructing a root formatter. The default +is to just delegate to the regular C<new()> method, most formatters can ignore +this. =over 4 @@ -112,6 +119,12 @@ they can do that. =back +The C<new_root> method is called when C<Test2::API::Stack> Initializes the root +hub for the first time. Most formatters will simply have this call C<< +$class->new >>, which is the default behavior. Some formatters however may want +to take extra action during construction of the root formatter, this is where +they can do that. + =head1 SOURCE The source code repository for Test2 can be found at @@ -135,7 +148,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm index 2082de7b8f9..25961bf7370 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm @@ -2,7 +2,7 @@ package Test2::Formatter::TAP; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::Util qw/clone_io/; @@ -16,6 +16,18 @@ sub OUT_ERR() { 1 } BEGIN { require Test2::Formatter; our @ISA = qw(Test2::Formatter) } +# Not constants because this is a method, and can be overriden +BEGIN { + local $SIG{__DIE__} = 'DEFAULT'; + local $@; + if (($INC{'Term/Table.pm'} && $INC{'Term/Table/Util.pm'}) || eval { require Term::Table; require Term::Table::Util; 1 }) { + *supports_tables = sub { 1 }; + } + else { + *supports_tables = sub { 0 }; + } +} + sub _autoflush { my($fh) = pop; my $old_fh = select $fh; @@ -104,10 +116,9 @@ sub write { print $io "\n" if $ENV{HARNESS_ACTIVE} - && !$ENV{HARNESS_IS_VERBOSE} && $hid == OUT_ERR && $self->{+_LAST_FH} != $io - && $msg =~ m/^#\s*Failed test /; + && $msg =~ m/^#\s*Failed( \(TODO\))? test /; $msg =~ s/^/$indent/mg if $nesting; print $io $msg; @@ -363,11 +374,23 @@ sub info_tap { return map { my $details = $_->{details}; + my $table = $_->{table}; my $IO = $_->{debug} && !($f->{amnesty} && @{$f->{amnesty}}) ? OUT_ERR : OUT_STD; my $msg; - if (ref($details)) { + if ($table && $self->supports_tables) { + $msg = join "\n" => map { "# $_" } Term::Table->new( + header => $table->{header}, + rows => $table->{rows}, + collapse => $table->{collapse}, + no_collapse => $table->{no_collapse}, + sanitize => 1, + mark_tail => 1, + max_width => $self->calc_table_size($f), + )->render(); + } + elsif (ref($details)) { require Data::Dumper; my $dumper = Data::Dumper->new([$details])->Indent(2)->Terse(1)->Pad('# ')->Useqq(1)->Sortkeys(1); chomp($msg = $dumper->Dump); @@ -394,6 +417,20 @@ sub summary_tap { return [OUT_STD, "$summary\n"]; } +sub calc_table_size { + my $self = shift; + my ($f) = @_; + + my $term = Term::Table::Util::term_size(); + my $nesting = 2 + (($f->{trace}->{nested} || 0) * 4); # 4 spaces per level, also '# ' prefix + my $total = $term - $nesting; + + # Sane minimum width, any smaller and we are asking for pain + return 50 if $total < 50; + + return $total; +} + 1; __END__ @@ -477,7 +514,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub.pm index 6be1c8d1f52..a5706e56771 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub.pm @@ -2,11 +2,11 @@ package Test2::Hub; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/carp croak confess/; -use Test2::Util qw/get_tid ipc_separator/; +use Test2::Util qw/get_tid gen_uid/; use Scalar::Util qw/weaken/; use List::Util qw/first/; @@ -38,13 +38,12 @@ use Test2::Util::HashBase qw{ my $UUID_VIA; -my $ID_POSTFIX = 1; sub init { my $self = shift; $self->{+PID} = $$; $self->{+TID} = get_tid(); - $self->{+HID} = join ipc_separator, $self->{+PID}, $self->{+TID}, $ID_POSTFIX++; + $self->{+HID} = gen_uid(); $UUID_VIA ||= Test2::API::_add_uuid_via_ref(); $self->{+UUID} = ${$UUID_VIA}->('hub') if $$UUID_VIA; @@ -75,7 +74,7 @@ sub _tb_reset { $self->{+PID} = $$; $self->{+TID} = get_tid(); - $self->{+HID} = join ipc_separator, $self->{+PID}, $self->{+TID}, $ID_POSTFIX++; + $self->{+HID} = gen_uid(); if (my $ipc = $self->{+IPC}) { $ipc->add_hub($self->{+HID}); @@ -278,6 +277,8 @@ sub send { my $self = shift; my ($e) = @_; + $e->eid; + $e->add_hub( { details => ref($self), @@ -898,7 +899,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm index b7af4cf427d..cd459ada066 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm @@ -2,7 +2,7 @@ package Test2::Hub::Interceptor; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::Hub::Interceptor::Terminator(); @@ -78,7 +78,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm index 76ad94a94cc..6f44b08bcdd 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm @@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; 1; @@ -41,7 +41,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm index c36a19e1ad6..52d5b4e0fa4 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm @@ -2,7 +2,7 @@ package Test2::Hub::Subtest; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) } use Test2::Util::HashBase qw/nested exit_code manual_skip_all/; @@ -126,7 +126,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC.pm index cfee4618023..b2a503bfa74 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC.pm @@ -2,12 +2,13 @@ package Test2::IPC; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Test2::API::Instance; use Test2::Util qw/get_tid/; use Test2::API qw{ + test2_in_preload test2_init_done test2_ipc test2_has_ipc @@ -18,6 +19,16 @@ use Test2::API qw{ context }; +# Make sure stuff is finalized before anyone tried to fork or start a new thread. +{ + # Avoid warnings if things are loaded at run-time + no warnings 'void'; + INIT { + use warnings 'void'; + context()->release() unless test2_in_preload(); + } +} + use Carp qw/confess/; our @EXPORT_OK = qw/cull/; @@ -139,7 +150,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver.pm index a4d72557327..dbcb7004b3f 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver.pm @@ -2,7 +2,7 @@ package Test2::IPC::Driver; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/confess/; @@ -18,7 +18,8 @@ sub import { test2_ipc_add_driver($class); } -sub use_shm { 0 } +sub pending { -1 } +sub set_pending { -1 } for my $meth (qw/send cull add_hub drop_hub waiting is_viable/) { no strict 'refs'; @@ -89,11 +90,6 @@ error. This is the same as C<< $ipc->abort($msg) >> except that it uses C<Carp::longmess> to add a stack trace to the message. -=item $false = $self->use_shm - -The base class always returns false for this method. You may override it if you -wish to use the SHM made available in L<Test2::API>/L<Test2::API::Instance>. - =back =head1 LOADING DRIVERS @@ -141,8 +137,7 @@ load it too late for it to be effective. ... # Send the event to the proper hub. - # If you are using the SHM you should notify other procs/threads that - # there is a pending event. + # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } @@ -213,8 +208,7 @@ process+thread. ... # Send the event to the proper hub. - # If you are using the SHM you should notify other procs/threads that - # there is a pending event. + # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } @@ -258,15 +252,6 @@ This is a hook called by C<< Test2::IPC::Driver->abort() >>. This is your chance to cleanup when an abort happens. You cannot prevent the abort, but you can gracefully except it. -=item $bool = $ipc->use_shm() - -True if you want to make use of the L<Test2::API>/L<Test2::API::Instance> SHM. - -=item $bites = $ipc->shm_size() - -Use this to customize the size of the SHM space. There are no guarantees about -what the size will be if you do not implement this. - =back =head1 SOURCE @@ -292,7 +277,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm index 1d37a833264..f6d7ff1b2c0 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm @@ -2,8 +2,7 @@ package Test2::IPC::Driver::Files; use strict; use warnings; -our $VERSION = '1.302133'; - +our $VERSION = '1.302162'; BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) } @@ -18,9 +17,6 @@ use POSIX(); use Test2::Util qw/try get_tid pkg_to_file IS_WIN32 ipc_separator do_rename do_unlink try_sig_mask/; use Test2::API qw/test2_ipc_set_pending/; -sub use_shm { 1 } -sub shm_size() { 64 } - sub is_viable { 1 } sub init { @@ -168,7 +164,7 @@ do so if Test::Builder is loaded for legacy reasons. if ($ok) { $self->abort("Could not rename file '$file' -> '$ready': $ren_err") unless $ren_ok; - test2_ipc_set_pending(substr($file, -(shm_size))); + test2_ipc_set_pending($file); } else { my $src_file = __FILE__; @@ -270,7 +266,7 @@ sub parse_event_filename { my $ready = substr($file, -6, 6) eq '.ready' || 0 and substr($file, -6, 6, ""); my @parts = split ipc_separator, $file; - my ($global, $hid) = $parts[0] eq 'GLOBAL' ? (1, shift @parts) : (0, join ipc_separator, splice(@parts, 0, 3)); + my ($global, $hid) = $parts[0] eq 'GLOBAL' ? (1, shift @parts) : (0, join ipc_separator, splice(@parts, 0, 4)); my ($pid, $tid, $eid) = splice(@parts, 0, 3); my $type = join '::' => @parts; @@ -473,7 +469,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm index 93c3df03e8f..4da76a79ba4 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm @@ -16,7 +16,7 @@ use Test2::API qw/context run_subtest test2_stack/; use Test2::Hub::Interceptor(); use Test2::Hub::Interceptor::Terminator(); -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; BEGIN { require Exporter; our @ISA = qw(Exporter) } our @EXPORT = qw{ @@ -425,7 +425,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Transition.pod b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Transition.pod index 12c46ee569f..de6442ce610 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Transition.pod +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Transition.pod @@ -502,7 +502,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util.pm index 6de008b683d..c4a865e9b15 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util.pm @@ -2,7 +2,7 @@ package Test2::Util; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use POSIX(); use Config qw/%Config/; @@ -29,6 +29,8 @@ our @EXPORT_OK = qw{ ipc_separator + gen_uid + do_rename do_unlink try_sig_mask @@ -157,6 +159,9 @@ sub pkg_to_file { sub ipc_separator() { "~" } +my $UID = 1; +sub gen_uid() { join ipc_separator() => ($$, get_tid(), time, $UID++) } + sub _check_for_sig_sys { my $sig_list = shift; return $sig_list =~ m/\bSYS\b/; @@ -178,7 +183,7 @@ my %PERLIO_SKIP = ( sub clone_io { my ($fh) = @_; - my $fileno = fileno($fh); + my $fileno = eval { fileno($fh) }; return $fh if !defined($fileno) || !length($fileno) || $fileno < 0; @@ -329,6 +334,30 @@ otherwise it returns 0. Convert a package name to a filename. +=item $string = ipc_separator() + +Get the IPC separator. Currently this is always the string C<'~'>. + +=item $string = gen_uid() + +Generate a unique id (NOT A UUID). This will typically be the process id, the +thread id, the time, and an incrementing integer all joined with the +C<ipc_separator()>. + +These ID's are unique enough for most purposes. For identical ids to be +generated you must have 2 processes with the same PID generate IDs at the same +time with the same current state of the incrementing integer. This is a +perfectly reasonable thing to expect to happen across multiple machines, but is +quite unlikely to happen on one machine. + +This can fail to be unique if a process generates an id, calls exec, and does +it again after the exec and it all happens in less than a second. It can also +happen if the systems process id's cycle in less than a second allowing 2 +different programs that use this generator to run with the same PID in less +than a second. Both these cases are sufficiently unlikely. If you need +universally unique ids, or ids that are unique in these conditions, look at +L<Data::UUID>. + =item ($ok, $err) = do_rename($old_name, $new_name) Rename a file, this wraps C<rename()> in a way that makes it more reliable @@ -409,7 +438,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm index f03422c61af..dbd819feeaf 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm @@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/croak/; @@ -172,7 +172,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm index db74510a4d0..812282d157a 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm @@ -2,7 +2,7 @@ package Test2::Util::Facets2Legacy; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; use Carp qw/croak confess/; use Scalar::Util qw/blessed/; @@ -289,7 +289,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/HashBase.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/HashBase.pm index 8e73af425e2..c34db5fc565 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/HashBase.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/HashBase.pm @@ -2,7 +2,7 @@ package Test2::Util::HashBase; use strict; use warnings; -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; ################################################################# # # @@ -425,7 +425,7 @@ F<http://github.com/Test-More/HashBase/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Trace.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Trace.pm index 1e5351f6db5..28124f3406c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Trace.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test2/Util/Trace.pm @@ -2,7 +2,7 @@ package Test2::Util::Trace; require Test2::EventFacet::Trace; @ISA = ('Test2::EventFacet::Trace'); -our $VERSION = '1.302133'; +our $VERSION = '1.302162'; 1; @@ -44,7 +44,7 @@ F<http://github.com/Test-More/test-more/>. =head1 COPYRIGHT -Copyright 2018 Chad Granum E<lt>exodist@cpan.orgE<gt>. +Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy_And_Test2/thread_init_warning.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy_And_Test2/thread_init_warning.t new file mode 100644 index 00000000000..23254c618f9 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy_And_Test2/thread_init_warning.t @@ -0,0 +1,22 @@ +use strict; +use warnings; + +use Test2::Util qw/CAN_THREAD/; +BEGIN { + unless(CAN_THREAD) { + require Test::More; + Test::More->import(skip_all => "threads are not supported"); + } +} + +use threads; + +my @warns; +{ + local $SIG{__WARN__} = sub { push @warns => @_ }; + require Test::More; +} + +Test::More::is_deeply(\@warns, [], "No init warning"); + +Test::More::done_testing(); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t index f6d72f643e5..35097fa6658 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t @@ -1,7 +1,7 @@ use strict; use warnings; -use Test2::Util qw/CAN_FORK/; +use Test2::Util qw/CAN_REALLY_FORK/; use Test2::IPC; use Test2::API qw/context/; @@ -18,7 +18,7 @@ sub ok($;$) { $ctx->release; } -plan(0, skip_all => 'System cannot fork') unless CAN_FORK(); +plan(0, skip_all => 'System cannot fork') unless CAN_REALLY_FORK(); plan(6); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/behavior/trace_signature.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/behavior/trace_signature.t index bb3dbf9eade..20649f24b7f 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/behavior/trace_signature.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/behavior/trace_signature.t @@ -24,9 +24,10 @@ ok($sigpass ne $sigfail, "Each tool got a new signature"); is($events->[$_]->trace->signature, $sigfail, "Diags share failed ok's signature") for 2 .. $#$events; -like($sigpass, qr/^C\d+:$$:\Q${ \get_tid() }:${ \__FILE__ }:$line\E$/, "signature is sane"); +like($sigpass, qr/$$~${ \get_tid() }~\d+~\d+:$$:\Q${ \get_tid() }:${ \__FILE__ }:$line\E$/, "signature is sane"); my $trace = Test2::EventFacet::Trace->new(frame => ['main', 'foo.t', 42, 'xxx']); +delete $trace->{cid}; is($trace->signature, undef, "No signature without a cid"); is($events->[0]->related($events->[1]), 0, "event 0 is not related to event 1"); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Context.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Context.t index abb86b64a9f..207f3d0a070 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Context.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Context.t @@ -447,4 +447,34 @@ sub { is($?, 33, "Destroy does not restore \$?"); }->(); +sub { + require Test2::EventFacet::Info::Table; + + my $events = intercept { + my $ctx = context(); + + $ctx->fail('foo', 'bar', Test2::EventFacet::Info::Table->new(rows => [['a', 'b']])); + $ctx->fail_and_release('foo', 'bar', Test2::EventFacet::Info::Table->new(rows => [['a', 'b']], as_string => 'a, b')); + }; + + is(@$events, 2, "got 2 events"); + + is($events->[0]->{info}->[0]->{details}, 'bar', "got first diag"); + is($events->[0]->{info}->[1]->{details}, '<TABLE NOT DISPLAYED>', "second diag has default details"); + is_deeply( + $events->[0]->{info}->[1]->{table}, + {rows => [['a', 'b']]}, + "Got the table rows" + ); + + is($events->[1]->{info}->[0]->{details}, 'bar', "got first diag"); + is($events->[1]->{info}->[1]->{details}, 'a, b', "second diag has custom details"); + is_deeply( + $events->[1]->{info}->[1]->{table}, + {rows => [['a', 'b']]}, + "Got the table rows" + ); + +}->(); + done_testing; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Instance.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Instance.t index 4238b1dbd96..eac33705b87 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Instance.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/API/Instance.t @@ -133,7 +133,7 @@ ok($one->finalized, "calling format finalized the object"); { local $ENV{T2_FORMATTER} = 'TAP'; - $one->reset; + my $one = $CLASS->new; is($one->formatter, 'Test2::Formatter::TAP', "got specified formatter"); ok($one->finalized, "calling format finalized the object"); @@ -177,7 +177,7 @@ like( ); if (CAN_REALLY_FORK) { - $one->reset; + my $one = $CLASS->new; my $pid = fork; die "Failed to fork!" unless defined $pid; unless($pid) { exit 0 } @@ -208,7 +208,7 @@ if (CAN_REALLY_FORK) { if (CAN_THREAD && $] ge '5.010') { require threads; - $one->reset; + my $one = $CLASS->new; threads->new(sub { 1 }); is(Test2::API::Instance::_ipc_wait, 0, "No errors"); @@ -229,14 +229,14 @@ if (CAN_THREAD && $] ge '5.010') { } { - $one->reset(); + my $one = $CLASS->new; local $? = 0; $one->set_exit; is($?, 0, "no errors on exit"); } { - $one->reset(); + my $one = $CLASS->new; $one->set__tid(1); local $? = 0; $one->set_exit; @@ -244,7 +244,7 @@ if (CAN_THREAD && $] ge '5.010') { } { - $one->reset(); + my $one = $CLASS->new; $one->stack->top; $one->no_wait(1); local $? = 0; @@ -253,7 +253,7 @@ if (CAN_THREAD && $] ge '5.010') { } { - $one->reset(); + my $one = $CLASS->new; $one->stack->top->set_no_ending(1); local $? = 0; $one->set_exit; @@ -261,7 +261,7 @@ if (CAN_THREAD && $] ge '5.010') { } { - $one->reset(); + my $one = $CLASS->new; $one->load(); $one->stack->top->set_failed(2); local $? = 0; @@ -270,7 +270,7 @@ if (CAN_THREAD && $] ge '5.010') { } { - $one->reset(); + my $one = $CLASS->new; $one->load(); local $? = 500; $one->set_exit; @@ -280,7 +280,7 @@ if (CAN_THREAD && $] ge '5.010') { { local %INC = %INC; delete $INC{'Test2/IPC.pm'}; - $one->reset(); + my $one = $CLASS->new; $one->load(); my @events; $one->stack->top->filter(sub { push @events => $_[1]; undef}); @@ -293,7 +293,7 @@ if (CAN_THREAD && $] ge '5.010') { SKIP: { last SKIP if $] lt "5.008"; - $one->reset; + my $one = $CLASS->new; my $stderr = ""; { local $INC{'Test/Builder.pm'} = __FILE__; @@ -327,7 +327,7 @@ SKIP: { my $ran = 0; local *Test2::API::Breakage::report = sub { $ran++; return "foo" }; use warnings qw/redefine once/; - $one->reset(); + my $one = $CLASS->new; $one->load(); my $stderr = ""; @@ -349,7 +349,7 @@ foo { - $one->reset(); + my $one = $CLASS->new; $one->load(); my @events; $one->stack->top->filter(sub { push @events => $_[1]; undef}); @@ -368,7 +368,7 @@ foo if (CAN_REALLY_FORK) { local $SIG{__WARN__} = sub { }; - $one->reset(); + my $one = $CLASS->new; my $pid = fork; die "Failed to fork!" unless defined $pid; unless ($pid) { exit 255 } @@ -392,6 +392,7 @@ if (CAN_REALLY_FORK) { } { + my $one = $CLASS->new; my $ctx = bless { trace => Test2::EventFacet::Trace->new(frame => ['Foo::Bar', 'Foo/Bar.pm', 42, 'xxx']), hub => Test2::Hub->new(), @@ -409,6 +410,7 @@ if (CAN_REALLY_FORK) { ], "Warned about unfreed context" ); + $one->set_no_wait(0); } { @@ -417,7 +419,7 @@ if (CAN_REALLY_FORK) { delete $INC{'threads.pm'}; ok(!USE_THREADS, "Sanity Check"); - $one->reset; + my $one = $CLASS->new; ok(!$one->ipc, 'IPC not loaded, no IPC object'); ok($one->finalized, "calling ipc finalized the object"); is($one->ipc_polling, undef, "no polling defined"); @@ -469,7 +471,8 @@ if (CAN_REALLY_FORK) { } { - $one->reset; + my $one = $CLASS->new; + $one->{ipc} = Test2::IPC::Driver::Files->new; ok(!@{$one->context_init_callbacks}, "no callbacks"); is($one->ipc_polling, undef, "no polling, undef"); @@ -488,7 +491,6 @@ if (CAN_REALLY_FORK) { ok(defined($one->{_tid}), "tid is defined"); is(@{$one->context_init_callbacks}, 1, "added the callback"); is($one->ipc_polling, 1, "polling on"); - $one->set_ipc_shm_last('abc1'); $one->context_init_callbacks->[0]->({'hub' => 'Fake::Hub'}); is($cull, 1, "called cull once"); $cull = 0; @@ -496,7 +498,6 @@ if (CAN_REALLY_FORK) { $one->disable_ipc_polling; is(@{$one->context_init_callbacks}, 1, "kept the callback"); is($one->ipc_polling, 0, "no polling, set to 0"); - $one->set_ipc_shm_last('abc3'); $one->context_init_callbacks->[0]->({'hub' => 'Fake::Hub'}); is($cull, 0, "did not call cull"); $cull = 0; @@ -504,7 +505,6 @@ if (CAN_REALLY_FORK) { $one->enable_ipc_polling; is(@{$one->context_init_callbacks}, 1, "did not add the callback"); is($one->ipc_polling, 1, "polling on"); - $one->set_ipc_shm_last('abc3'); $one->context_init_callbacks->[0]->({'hub' => 'Fake::Hub'}); is($cull, 1, "called cull once"); } @@ -513,7 +513,7 @@ if (CAN_REALLY_FORK) { require Test2::IPC::Driver::Files; local $ENV{T2_NO_IPC} = 1; - $one->reset; + my $one = $CLASS->new; $one->add_ipc_driver('Test2::IPC::Driver::Files'); ok($one->ipc_disabled, "IPC is disabled by env var"); ok(!$one->ipc, 'IPC not loaded'); @@ -534,4 +534,6 @@ if (CAN_REALLY_FORK) { ok($one->ipc_disabled, "IPC is disabled directly"); } +Test2::API::test2_ipc_wait_enable(); + done_testing; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event.t index 6a414f7be90..6d87bd690a2 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event.t @@ -82,7 +82,8 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', - no_display => undef + eid => $e->eid, + no_display => undef, }, control => { has_callback => 0, @@ -90,7 +91,7 @@ tests facet_data => sub { global => 0 }, }, - "Facet data has control with onyl false values, and an about" + "Facet data has control with only false values, and an about" ); $e->set_trace(Test2::EventFacet::Trace->new(frame => ['foo', 'foo.t', 42])); @@ -100,7 +101,8 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', - no_display => undef + eid => $e->eid, + no_display => undef, }, control => { has_callback => 0, @@ -123,6 +125,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -153,6 +156,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -181,6 +185,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -211,6 +216,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -244,6 +250,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -273,6 +280,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -303,6 +311,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -334,6 +343,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -364,6 +374,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -395,6 +406,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef }, control => { @@ -431,6 +443,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => 1, }, control => { @@ -449,6 +462,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'Test2::Event::Generic', + eid => $e->eid, no_display => undef, }, control => { @@ -472,6 +486,7 @@ tests facet_data => sub { about => { package => 'Test2::Event::Generic', details => 'foo bar baz', + eid => $e->eid, no_display => undef, }, control => { @@ -577,6 +592,7 @@ tests common_facet_data => sub { { about => { package => 'Test2::Event::Generic', + eid => $e->eid, }, }, "Facet data has an about" @@ -588,6 +604,7 @@ tests common_facet_data => sub { { about => { package => 'Test2::Event::Generic', + eid => $e->eid, }, trace => { frame => ['foo', 'foo.t', 42], @@ -604,6 +621,7 @@ tests common_facet_data => sub { { about => { package => 'Test2::Event::Generic', + eid => $e->eid, }, trace => { frame => ['foo', 'foo.t', 42], @@ -622,6 +640,7 @@ tests common_facet_data => sub { { about => { package => 'Test2::Event::Generic', + eid => $e->eid, }, trace => { frame => ['foo', 'foo.t', 42], diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Bail.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Bail.t index 360179361b0..f245b205d98 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Bail.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Bail.t @@ -25,6 +25,7 @@ is_deeply( { about => { package => 'Test2::Event::Bail', + eid => $bail->eid, }, control => { global => 1, @@ -51,6 +52,7 @@ is_deeply( { about => { package => 'Test2::Event::Bail', + eid => $bail->eid, }, control => { global => 1, diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Encoding.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Encoding.t index 9ac6baf72ce..85715613643 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Encoding.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Encoding.t @@ -19,7 +19,11 @@ is($one->summary, "Encoding set to utf8", "Got summary"); is_deeply( $one->facet_data, { - about => { package => $CLASS, details => "Encoding set to utf8" }, + about => { + package => $CLASS, + details => "Encoding set to utf8", + eid => $one->eid, + }, control => { encoding => 'utf8' }, }, "Got facet data" diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Fail.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Fail.t index 80d27f6068b..589dd74bdba 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Fail.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Fail.t @@ -27,7 +27,7 @@ $one->add_info({tag => 'xxx', details => 'yyy'}); is_deeply( $one->facet_data, { - about => {package => $CLASS, details => 'fail'}, + about => {package => $CLASS, details => 'fail', eid => $one->eid}, assert => {pass => 0, details => 'no soup for you'}, amnesty => [{tag => 'blah', details => 'blah'}], info => [{tag => 'xxx', details => 'yyy'}], diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Generic.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Generic.t index 10d57ec6eed..46e358df429 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Generic.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Generic.t @@ -27,18 +27,20 @@ is_deeply( increments_count => 0, diagnostics => 0, no_display => 0, + _eid => $e->eid, hubs => [ { 'buffered' => 0, 'details' => 'Test2::Hub::Interceptor', - 'hid' => "$$~0~2", + 'hid' => $e->hubs->[0]->{hid}, 'ipc' => 0, 'nested' => 0, 'pid' => $$, 'tid' => 0, - 'uuid' => undef + $e->hubs->[0]->{uuid} ? (uuid => $e->hubs->[0]->{uuid}) : (uuid => undef), } ], + $e->uuid ? (uuid => $e->uuid) : (), }, "Defaults" ); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Pass.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Pass.t index 52c71ea507c..d0d37b0cbcd 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Pass.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Pass.t @@ -26,7 +26,7 @@ is_deeply( $one->facet_data, { trace => {frame => ['foo', 'foo.pl', 42]}, - about => {package => $CLASS, details => 'pass'}, + about => {package => $CLASS, details => 'pass', eid => $one->eid}, assert => {pass => 1, details => 'soup for you'}, amnesty => [{tag => 'blah', details => 'blah'}], info => [{tag => 'xxx', details => 'yyy'}], diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Subtest.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Subtest.t index 209c48ec642..d275eadb375 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Subtest.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/Subtest.t @@ -42,7 +42,8 @@ is_deeply( { about => { details => 'pass', - package => 'Test2::Event::Pass' + package => 'Test2::Event::Pass', + eid => $one->subevents->[0]->eid, }, assert => { details => 'xxx', diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/TAP/Version.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/TAP/Version.t index a1fd6b900c0..ba40b9f4f42 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/TAP/Version.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/TAP/Version.t @@ -19,7 +19,7 @@ is($one->summary, "TAP version 13", "Got summary"); is_deeply( $one->facet_data, { - about => { package => $CLASS, details => "TAP version 13"}, + about => { package => $CLASS, details => "TAP version 13", eid => $one->eid}, info => [{tag => 'INFO', debug => 0, details => "TAP version 13"}], }, "Got facet data" diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t index 6f31c888aea..ee54a151c5f 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t @@ -13,7 +13,7 @@ BEGIN { select $old; require Test2::Formatter::TAP; - $CLASS = 'Test2::Formatter::TAP'; + $CLASS = 'Test2::Formatter::TAP'; *OUT_STD = $CLASS->can('OUT_STD') or die "Could not get OUT_STD constant"; *OUT_ERR = $CLASS->can('OUT_ERR') or die "Could not get OUT_ERR constant"; } @@ -24,7 +24,7 @@ use Test2::API qw/context/; BEGIN { eval { require PerlIO; - PerlIO->VERSION(1.02); # required for PerlIO::get_layers + PerlIO->VERSION(1.02); # required for PerlIO::get_layers } or do { print "1..0 # SKIP Don't have PerlIO 1.02\n"; exit 0; @@ -33,8 +33,8 @@ BEGIN { sub grabber { my ($std, $err); - open( my $stdh, '>', \$std ) || die "Ooops"; - open( my $errh, '>', \$err ) || die "Ooops"; + open(my $stdh, '>', \$std) || die "Ooops"; + open(my $errh, '>', \$err) || die "Ooops"; my $it = $CLASS->new( handles => [$stdh, $errh, $stdh], @@ -87,7 +87,7 @@ tests "IO handle stuff" => sub { ok($|, "AUTOFLUSH was turned on for copy-STDERR"); select $old; - ok($CLASS->hide_buffered, "TAP will hide buffered events"); + ok($CLASS->hide_buffered, "TAP will hide buffered events"); ok(!$CLASS->no_subtest_space, "Default formatter does not have subtest space"); }; @@ -125,9 +125,9 @@ tests optimal_pass => sub { $pass = Test2::Event::Ok->new(pass => 1, name => 'xxx'); ok($it->print_optimal_pass($pass, 1), "Printed an 'Ok' pass with a name"); - $pass = Test2::Event::Pass->new(name => 'xxx', trace => { nested => 1 }); + $pass = Test2::Event::Pass->new(name => 'xxx', trace => {nested => 1}); ok($it->print_optimal_pass($pass, 1), "Printed a nested pass"); - $pass = Test2::Event::Pass->new(name => 'xxx', trace => { nested => 3 }); + $pass = Test2::Event::Pass->new(name => 'xxx', trace => {nested => 3}); ok($it->print_optimal_pass($pass, 1), "Printed a deeply nested pass"); $pass = Test2::Event::Pass->new(name => 'xxx'); @@ -154,25 +154,25 @@ tests plan_tap => sub { is_deeply([$it->plan_tap({})], [], "Nothing with no plan facet"); is_deeply( - [$it->plan_tap({plan => { none => 1 }})], + [$it->plan_tap({plan => {none => 1}})], [], "no-plan has no output" ); is_deeply( - [$it->plan_tap({plan => { count => 20 }})], + [$it->plan_tap({plan => {count => 20}})], [[OUT_STD, "1..20\n"]], "Wrote the plan from, count" ); is_deeply( - [$it->plan_tap({plan => { count => 'anything', skip => 1 }})], + [$it->plan_tap({plan => {count => 'anything', skip => 1}})], [[OUT_STD, "1..0 # SKIP\n"]], "Skip, no reason" ); is_deeply( - [$it->plan_tap({plan => { count => 'anything', skip => 1, details => 'I said so' }})], + [$it->plan_tap({plan => {count => 'anything', skip => 1, details => 'I said so'}})], [[OUT_STD, "1..0 # SKIP I said so\n"]], "Skip with reason" ); @@ -605,7 +605,7 @@ tests debug_tap => sub { $it->debug_tap( { assert => {details => 'foo bar', pass => 0}, - trace => {frame => ['foo', 'foo.t', 42]}, + trace => {frame => ['foo', 'foo.t', 42]}, amnesty => [], }, 1 @@ -622,7 +622,7 @@ tests debug_tap => sub { $it->debug_tap( { assert => {details => 'foo bar', pass => 0}, - trace => {frame => ['foo', 'foo.t', 42]}, + trace => {frame => ['foo', 'foo.t', 42]}, amnesty => [{tag => 'TODO', details => 'xxx'}], }, 1 @@ -634,32 +634,31 @@ tests debug_tap => sub { "Debug empty amnesty" ); - ok(!$$out, "No std output yet"); ok(!$$err, "No err output yet"); my $event = Test2::Event::Fail->new(trace => {frame => ['foo', 'foo.pl', 42]}); { - local $ENV{HARNESS_ACTIVE} = 0; + local $ENV{HARNESS_ACTIVE} = 0; local $ENV{HARNESS_IS_VERBOSE} = 0; $event->{name} = 'no harness'; $it->write($event, 1); - $ENV{HARNESS_ACTIVE} = 0; + $ENV{HARNESS_ACTIVE} = 0; $ENV{HARNESS_IS_VERBOSE} = 1; $event->{name} = 'no harness, but strangely verbose'; $it->write($event, 1); - $ENV{HARNESS_ACTIVE} = 1; + $ENV{HARNESS_ACTIVE} = 1; $ENV{HARNESS_IS_VERBOSE} = 0; $event->{name} = 'harness, but not verbose'; $it->write($event, 1); - $ENV{HARNESS_ACTIVE} = 1; + $ENV{HARNESS_ACTIVE} = 1; $ENV{HARNESS_IS_VERBOSE} = 1; $event->{name} = 'harness that is verbose'; @@ -681,6 +680,7 @@ not ok 1 - harness that is verbose # Failed test 'harness, but not verbose' # at foo.pl line 42. + # Failed test 'harness that is verbose' # at foo.pl line 42. EOT @@ -697,7 +697,7 @@ tests halt_tap => sub { is_deeply( [$it->halt_tap({trace => {nested => 1, buffered => 1}})], - [[OUT_STD, "Bail out!\n" ]], + [[OUT_STD, "Bail out!\n"]], "Got tap for nested buffered bail" ); @@ -733,19 +733,19 @@ tests summary_tap => sub { my ($it, $out, $err) = grabber(); is_deeply( - [$it->summary_tap({about => { no_display => 1, details => "Should not see me"}})], + [$it->summary_tap({about => {no_display => 1, details => "Should not see me"}})], [], "no display" ); is_deeply( - [$it->summary_tap({about => { no_display => 0, details => ""}})], + [$it->summary_tap({about => {no_display => 0, details => ""}})], [], "no summary" ); is_deeply( - [$it->summary_tap({about => { no_display => 0, details => "foo bar"}})], + [$it->summary_tap({about => {no_display => 0, details => "foo bar"}})], [[OUT_STD, "# foo bar\n"]], "summary" ); @@ -832,7 +832,6 @@ tests error_tap => sub { ok(!$$err, "No err output yet"); }; - tests event_tap => sub { my ($it, $out, $err) = grabber(); @@ -919,7 +918,7 @@ tests event_tap => sub { $it->event_tap( { errors => [{details => "foo"}], - about => {details => 'xyz'}, + about => {details => 'xyz'}, }, 1 ) @@ -1016,4 +1015,114 @@ Bail out! blah EOT }; +my $can_table = $CLASS->supports_tables; +my $author_testing = $ENV{AUTHOR_TESTING}; + +if ($author_testing && !$can_table) { + die "This test requires Term::Table to be installed, and must be run in AUTHOR_TESTING mode"; +} +elsif ($can_table) { + tests tables => sub { + my ($it, $out, $err) = grabber(); + + no warnings 'redefine'; + local *Term::Table::Util::term_size = sub { 70 }; + + my %table_data = ( + header => ['H1', 'H2'], + rows => [ + ["R1C1\n", 'R1C2'], + ['R2C1', 'R2C2'], + [('x' x 30), ('y' x 30)], + ], + ); + + { + local *Test2::Formatter::TAP::supports_tables = sub { 0 }; + $it->write( + undef, 1, { + info => [ + { + tag => 'DIAG', + details => 'should see only this', + debug => 1, + table => \%table_data, + }, + { + tag => 'NOTE', + details => 'should see only this', + table => \%table_data, + }, + ] + }, + ); + } + + $it->write( + undef, 1, { + info => [ + { + tag => 'DIAG', + details => 'should not see', + debug => 1, + table => \%table_data, + }, + { + tag => 'NOTE', + details => 'should not see', + table => \%table_data, + }, + ] + }, + ); + + $it->write( + undef, 1, { + trace => {nested => 2}, + info => [ + { + tag => 'DIAG', + details => 'should not see', + debug => 1, + table => \%table_data, + }, + { + tag => 'NOTE', + details => 'should not see', + table => \%table_data, + }, + ] + }, + ); + + my $table1 = join "\n" => map { "# $_" } Term::Table->new( + %table_data, + max_width => Term::Table::Util::term_size() - 2, # 2 for '# ' + collapse => 1, + sanitize => 1, + mark_tail => 1, + )->render; + + my $table2 = join "\n" => map { " # $_" } Term::Table->new( + %table_data, + max_width => Term::Table::Util::term_size() - 10, # 2 for '# ', 8 for indentation + collapse => 1, + sanitize => 1, + mark_tail => 1, + )->render; + + is($$out, <<" EOT", "Showed detail OR tables, properly sized and indented in STDOUT"); +# should see only this +$table1 +$table2 + EOT + + is($$err, <<" EOT", "Showed detail OR tables, properly sized and indented in STDERR"); +# should see only this +$table1 +$table2 + EOT + }; +} + done_testing; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t index 8626b1fb654..f896db07095 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t @@ -46,7 +46,7 @@ ok(-d $ipc->tempdir, "created temp dir"); is($ipc->pid, $$, "stored pid"); is($ipc->tid, get_tid(), "stored the tid"); -my $hid = join ipc_separator, qw'12345 1 1'; +my $hid = join ipc_separator, qw'12345 1 1 1'; $ipc->add_hub($hid); my $hubfile = File::Spec->catfile($ipc->tempdir, "HUB" . ipc_separator . $hid); @@ -403,49 +403,49 @@ ok(!-d $tmpdir, "cleaned up temp dir"); ); is_deeply( - $ipc->parse_event_filename(join ipc_separator, qw'1 1 1 123 456 789 Event Type Foo.ready.complete'), + $ipc->parse_event_filename(join ipc_separator, qw'1 1 1 1 123 456 789 Event Type Foo.ready.complete'), { ready => 1, complete => 1, global => 0, type => "Event::Type::Foo", - hid => "1${sep}1${sep}1", + hid => "1${sep}1${sep}1${sep}1", pid => "123", tid => "456", eid => "789", - file => join ipc_separator, qw'1 1 1 123 456 789 Event Type Foo', + file => join ipc_separator, qw'1 1 1 1 123 456 789 Event Type Foo', }, "Parsed event complete" ); is_deeply( - $ipc->parse_event_filename(join ipc_separator, qw'1 2 3 123 456 789 Event Type Foo.ready'), + $ipc->parse_event_filename(join ipc_separator, qw'1 2 3 4 123 456 789 Event Type Foo.ready'), { ready => 1, complete => 0, global => 0, type => "Event::Type::Foo", - hid => "1${sep}2${sep}3", + hid => "1${sep}2${sep}3${sep}4", pid => "123", tid => "456", eid => "789", - file => join ipc_separator, qw'1 2 3 123 456 789 Event Type Foo', + file => join ipc_separator, qw'1 2 3 4 123 456 789 Event Type Foo', }, "Parsed event ready" ); is_deeply( - $ipc->parse_event_filename(join ipc_separator, qw'3 2 11 123 456 789 Event'), + $ipc->parse_event_filename(join ipc_separator, qw'3 2 11 12 123 456 789 Event'), { ready => 0, complete => 0, global => 0, type => "Event", - hid => "3${sep}2${sep}11", + hid => "3${sep}2${sep}11${sep}12", pid => "123", tid => "456", eid => "789", - file => join ipc_separator, qw'3 2 11 123 456 789 Event', + file => join ipc_separator, qw'3 2 11 12 123 456 789 Event', }, "Parsed event not ready" ); @@ -454,7 +454,7 @@ ok(!-d $tmpdir, "cleaned up temp dir"); { my $ipc = Test2::IPC::Driver::Files->new(); - my $hid = join ipc_separator, qw"1 1 1"; + my $hid = join ipc_separator, qw"1 1 1 1"; is_deeply( $ipc->should_read_event($hid, join ipc_separator, qw"GLOBAL 123 456 789 Event Type Foo.ready.complete") ? 1 : 0, diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util.t index 88bfd0e41ca..efbfd08dd7b 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util.t @@ -1,6 +1,14 @@ use strict; use warnings; +our $TIME; +BEGIN { + *CORE::GLOBAL::time = sub() { + return CORE::time() unless defined $TIME; + return $TIME; + }; +} + use Config qw/%Config/; use Test2::Tools::Tiny; @@ -15,6 +23,9 @@ use Test2::Util qw/ CAN_THREAD CAN_REALLY_FORK + ipc_separator + gen_uid + CAN_SIGSYS IS_WIN32 @@ -84,5 +95,17 @@ print $io "Test\n"; is($out, "Test\n", "wrote to the scalar handle"); +is(ipc_separator(), '~', "Got ipc_separator"); + +{ + local $TIME = time; + my $id1 = gen_uid(); + my $id2 = gen_uid(); + + like($id1, qr/^\Q$$~0~$TIME~\E\d+$/, "Got a UID ($id1)"); + my ($inc) = ($id1 =~ m/(\d+)$/g); + $inc++; + is($id2, "$$~0~$TIME~$inc", "Next id is next in sequence ($id2)"); +} done_testing; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util/Facets2Legacy.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util/Facets2Legacy.t index 98eaac60e29..5b723a8e033 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util/Facets2Legacy.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util/Facets2Legacy.t @@ -17,7 +17,7 @@ tests _get_facet_data => sub { is_deeply( _get_facet_data($pass), { - about => {package => 'Test2::Event::Pass', details => 'pass'}, + about => {package => 'Test2::Event::Pass', details => 'pass', eid => $pass->eid}, assert => {pass => 1, details => 'xxx'}, }, "Got facet data from event" diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t index b425443e00d..5550f1774bb 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t @@ -1,11 +1,11 @@ use strict; use warnings; use Test2::Tools::Tiny; -use Test2::Util qw/CAN_FORK/; +use Test2::Util qw/CAN_REALLY_FORK/; BEGIN { skip_all "Set AUTHOR_TESTING to run this test" unless $ENV{AUTHOR_TESTING}; - skip_all "System cannot fork" unless CAN_FORK; + skip_all "System cannot fork" unless CAN_REALLY_FORK; skip_all "known to fail on $]" if $] le "5.006002"; } diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/812-todo.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/812-todo.t new file mode 100644 index 00000000000..dd4e0b46466 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/812-todo.t @@ -0,0 +1,21 @@ +use strict; +use warnings; + +use Test2::API qw/intercept/; +use Test::More; + +my @values = ( + "", # false but defined -> inconsistent + 0, # false but defined -> inconsistent + 0.0, # false but defined -> inconsistent + "0.0", # true -> TODO + "this is why", # as expected +); + +for my $value (@values) { + local $TODO = $value; + my $x = defined($value) ? "\"$value\"" : 'UNDEF'; + fail "Testing: $x"; +} + +done_testing; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/817-subtest-todo.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/817-subtest-todo.t new file mode 100644 index 00000000000..fa6f5f8a3d4 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/817-subtest-todo.t @@ -0,0 +1,48 @@ +use Test2::API qw(run_subtest context intercept); +use Test::More; +use Test2::Tools::Tiny qw/todo/; + +sub aaa { + my $ctx = context(); + run_subtest( + "bad pass", + sub { + local $TODO = "third test"; + ok(1, "ok"); + } + ); + $ctx->release; +} + +sub bbb { + my $ctx = context(); + run_subtest( + "bad fail", + sub { + local $TODO = "fourth test"; + ok(0, "ok"); + } + ); + + $ctx->release; +} + +my $events = intercept { + Test::Builder->new->_add_ts_hooks(); + aaa(); + bbb(); +}; + +is_deeply( + $events->[1]->{subevents}->[0]->{amnesty}->[0], + { tag => 'TODO', details => "third test" }, + "Amnesty was set properly for first subtest assertion", +); + +is_deeply( + $events->[3]->{subevents}->[0]->{amnesty}->[0], + { tag => 'TODO', details => "fourth test" }, + "Amnesty was set properly for second subtest assertion", +); + +done_testing; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/fork_first.t b/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/fork_first.t new file mode 100644 index 00000000000..0b1ae25da5a --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Test-Simple/t/regression/fork_first.t @@ -0,0 +1,33 @@ +use Test2::Tools::Tiny; +use strict; +use warnings; + +use Test2::IPC; +use Test2::Util qw/CAN_THREAD CAN_REALLY_FORK/; + +skip_all 'No IPC' unless CAN_REALLY_FORK || CAN_THREAD; + +if (CAN_REALLY_FORK) { + my $pid = fork; + die "Failed to fork: $!" unless defined $pid; + if ($pid) { + waitpid($pid, 0) + } + else { + ok(1, "Pass fork"); + exit 0; + } +} + +if (CAN_THREAD) { + require threads; + my $thread = threads->create( + sub { + ok(1, "Pass thread"); + } + ); + + $thread->join; +} + +done_testing; diff --git a/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm b/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm index 65d7d588458..b5a62bb52dd 100644 --- a/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm +++ b/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm @@ -5,12 +5,13 @@ use strict; use Carp (); use Exporter; -our $VERSION = '1.25'; +our $VERSION = '1.28'; use parent 'Exporter'; -our @EXPORT = qw( timegm timelocal ); -our @EXPORT_OK = qw( timegm_nocheck timelocal_nocheck ); +our @EXPORT = qw( timegm timelocal ); +our @EXPORT_OK + = qw( timegm_modern timelocal_modern timegm_nocheck timelocal_nocheck ); my @MonthDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); @@ -62,9 +63,9 @@ if ( $^O eq 'vos' ) { $Epoc = _daygm( 0, 0, 0, 1, 0, 70, 4, 0 ); } elsif ( $^O eq 'MacOS' ) { - $MaxDay *= 2 if $^O eq 'MacOS'; # time_t unsigned ... quick hack? - # MacOS time() is seconds since 1 Jan 1904, localtime - # so we need to calculate an offset to apply later + $MaxDay *= 2; # time_t unsigned ... quick hack? + # MacOS time() is seconds since 1 Jan 1904, localtime + # so we need to calculate an offset to apply later $Epoc = 693901; $SecOff = timelocal( localtime(0) ) - timelocal( gmtime(0) ); $Epoc += _daygm( gmtime(0) ); @@ -73,7 +74,7 @@ else { $Epoc = _daygm( gmtime(0) ); } -%Cheat = (); # clear the cache as epoc has changed +%Cheat = (); # clear the cache as epoc has changed sub _daygm { @@ -105,11 +106,16 @@ sub _timegm { sub timegm { my ( $sec, $min, $hour, $mday, $month, $year ) = @_; - if ( $year >= 1000 ) { + if ( $Options{no_year_munging} ) { $year -= 1900; } - elsif ( $year < 100 and $year >= 0 ) { - $year += ( $year > $Breakpoint ) ? $Century : $NextCentury; + else { + if ( $year >= 1000 ) { + $year -= 1900; + } + elsif ( $year < 100 and $year >= 0 ) { + $year += ( $year > $Breakpoint ) ? $Century : $NextCentury; + } } unless ( $Options{no_range_check} ) { @@ -164,6 +170,11 @@ sub timegm_nocheck { return &timegm; } +sub timegm_modern { + local $Options{no_year_munging} = 1; + return &timegm; +} + sub timelocal { my $ref_t = &timegm; my $loc_for_ref_t = _timegm( localtime($ref_t) ); @@ -184,7 +195,7 @@ sub timelocal { !$dst_off && ( ( $ref_t - SECS_PER_HOUR ) - _timegm( localtime( $loc_t - SECS_PER_HOUR ) ) < 0 ) - ) { + ) { return $loc_t - SECS_PER_HOUR; } @@ -206,6 +217,11 @@ sub timelocal_nocheck { return &timelocal; } +sub timelocal_modern { + local $Options{no_year_munging} = 1; + return &timelocal; +} + 1; # ABSTRACT: Efficiently compute time from local and GMT time @@ -222,7 +238,7 @@ Time::Local - Efficiently compute time from local and GMT time =head1 VERSION -version 1.25 +version 1.28 =head1 SYNOPSIS @@ -247,6 +263,28 @@ consistent with the values returned from C<localtime()> and C<gmtime()>. =head1 FUNCTIONS +=head2 C<timelocal_modern()> and C<timegm_modern()> + +When C<Time::Local> was first written, it was a common practice to represent +years as a two-digit value like C<99> for C<1999> or C<1> for C<2001>. This +caused all sorts of problems (google "Y2K problem" if you're very young) and +developers eventually realized that this was a terrible idea. + +The default exports of C<timelocal()> and C<timegm()> do a complicated +calculation when given a year value less than 1000. This leads to surprising +results in many cases. See L</Year Value Interpretation> for details. + +The C<time*_modern()> subs do not do this year munging and simply take the +year value as provided. + +While it would be nice to make this the default behavior, that would almost +certainly break a lot of code, so you must explicitly import these subs and +use them instead of the default C<timelocal()> and C<timegm()>. + +You are B<strongly> encouraged to use these subs in any new code which uses +this module. It will almost certainly make your code's behavior less +surprising. + =head2 C<timelocal()> and C<timegm()> This module exports two functions by default, C<timelocal()> and C<timegm()>. @@ -270,6 +308,9 @@ will be unpredictable (so don't do that). =head2 Year Value Interpretation +B<This does not apply to C<timelocal_modern> or C<timegm_modern>. Use those +exports if you want to ensure consistent behavior as your code ages.> + Strictly speaking, the year should be specified in a form consistent with C<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 @@ -314,9 +355,10 @@ approximate range from Dec 1901 to Jan 2038. Both C<timelocal()> and C<timegm()> croak if given dates outside the supported range. -As of version 5.12.0, perl has stopped using the underlying time library of -the operating system it's running on and has its own implementation of those -routines with a safe range of at least +/ 2**52 (about 142 million years). +As of version 5.12.0, perl has stopped using the time implementation of the +operating system it's running on. Instead, it has its own implementation of +those routines with a safe range of at least +/- 2**52 (about 142 million +years) =head2 Ambiguous Local Times (DST) @@ -378,13 +420,17 @@ The current version was written by Graham Barr. The whole scheme for interpreting two-digit years can be considered a bug. -Bugs may be submitted through L<https://github.com/houseabsolute/Time-Local/issues>. +Bugs may be submitted at L<https://github.com/houseabsolute/Time-Local/issues>. There is a mailing list available for users of this distribution, L<mailto:datetime@perl.org>. I am also usually active on IRC as 'autarch' on C<irc://irc.perl.org>. +=head1 SOURCE + +The source code repository for Time-Local can be found at L<https://github.com/houseabsolute/Time-Local>. + =head1 AUTHOR Dave Rolsky <autarch@urth.org> @@ -411,9 +457,12 @@ Unknown <unknown@example.com> =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 1997 - 2016 by Graham Barr & Dave Rolsky. +This software is copyright (c) 1997 - 2018 by Graham Barr & Dave Rolsky. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. +The full text of the license can be found in the +F<LICENSE> file included with this distribution. + =cut diff --git a/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t b/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t index 634139695f4..adfb789a856 100644 --- a/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t +++ b/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t @@ -4,304 +4,370 @@ use strict; use warnings; use Config; -use Test::More 0.88; -use Time::Local; +use Test::More 0.96; +use Time::Local + qw( timegm timelocal timegm_modern timelocal_modern timegm_nocheck timelocal_nocheck ); -# Set up time values to test -my @time = ( +# Use 3 days before the start of the epoch because with Borland on +# Win32 it will work for -3600 _if_ your time zone is +01:00 (or +# greater). +my $neg_epoch_ok + = $^O eq 'VMS' ? 0 : defined( ( localtime(-259200) )[0] ) ? 1 : 0; - #year,mon,day,hour,min,sec - [ 1970, 1, 2, 0, 0, 0 ], - [ 1980, 2, 28, 12, 0, 0 ], - [ 1980, 2, 29, 12, 0, 0 ], - [ 1999, 12, 31, 23, 59, 59 ], - [ 2000, 1, 1, 0, 0, 0 ], - [ 2010, 10, 12, 14, 13, 12 ], +my $large_epoch_ok = eval { ( gmtime 2**40 )[5] == 34912 }; + +{ + my %tests = _valid_time_tests(); + for my $group ( sort keys %tests ) { + subtest( + $group, + sub { _test_group( $tests{$group} ) }, + ); + } +} - # leap day - [ 2020, 2, 29, 12, 59, 59 ], - [ 2030, 7, 4, 17, 7, 6 ], +sub _valid_time_tests { + my %tests = ( + 'simple times' => [ + [ 1970, 1, 2, 0, 0, 0 ], + [ 1980, 2, 28, 12, 0, 0 ], + [ 1980, 2, 29, 12, 0, 0 ], + [ 1999, 12, 31, 23, 59, 59 ], + [ 2000, 1, 1, 0, 0, 0 ], + [ 2010, 10, 12, 14, 13, 12 ], + ], + 'leap days' => [ + [ 2020, 2, 29, 12, 59, 59 ], + [ 2030, 7, 4, 17, 7, 6 ], + ], + 'non-integer seconds' => [ + [ 2010, 10, 12, 14, 13, 12.1 ], + [ 2010, 10, 12, 14, 13, 59.1 ], + ], + ); # The following test fails on a surprising number of systems # so it is commented out. The end of the Epoch for a 32-bit signed # implementation of time_t should be Jan 19, 2038 03:14:07 UTC. # [2038, 1, 17, 23, 59, 59], # last full day in any tz - [ 2010, 10, 12, 14, 13, 12.1 ], - [ 2010, 10, 12, 14, 13, 59.1 ], -); - -# more than 2**31 time_t - requires a 64bit safe localtime/gmtime -push @time, [ 2258, 8, 11, 1, 49, 17 ] - if $] >= 5.012000; - -my @bad_time = ( - - # month too large - [ 1995, 13, 1, 1, 1, 1 ], + # more than 2**31 time_t - requires a 64bit safe localtime/gmtime + $tests{'greater than 2**31 seconds'} = [ [ 2258, 8, 11, 1, 49, 17 ] ] + if $] >= 5.012000; - # day too large - [ 1995, 2, 30, 1, 1, 1 ], + # use vmsish 'time' makes for oddness around the Unix epoch + $tests{'simple times'}[0][2]++ + if $^O eq 'VMS'; - # hour too large - [ 1995, 2, 10, 25, 1, 1 ], + $tests{'negative epoch'} = [ + [ 1969, 12, 31, 16, 59, 59 ], + [ 1950, 4, 12, 9, 30, 31 ], + ] if $neg_epoch_ok; - # minute too large - [ 1995, 2, 10, 1, 60, 1 ], + return %tests; +} - # second too large - [ 1995, 2, 10, 1, 1, 60 ], -); +sub _test_group { + my $group = shift; + + for my $vals ( @{$group} ) { + my ( $year, $mon, $mday, $hour, $min, $sec ) = @{$vals}; + $mon--; + + # 1970 test on VOS fails + next if $^O eq 'vos' && $year == 1970; + + for my $sub (qw( timelocal timelocal_nocheck timelocal_modern )) { + subtest( + $sub, + sub { + my $time = __PACKAGE__->can($sub) + ->( $sec, $min, $hour, $mday, $mon, $year ); + + is_deeply( + [ ( localtime($time) )[ 0 .. 5 ] ], + [ int($sec), $min, $hour, $mday, $mon, $year - 1900 ], + "timelocal for @{$vals}" + ); + }, + ); + } -my @neg_time = ( + for my $sub (qw( timegm timegm_nocheck timegm_modern )) { + subtest( + $sub, + sub { + my $time = __PACKAGE__->can($sub) + ->( $sec, $min, $hour, $mday, $mon, $year ); + + is_deeply( + [ ( gmtime($time) )[ 0 .. 5 ] ], + [ int($sec), $min, $hour, $mday, $mon, $year - 1900 ], + "timegm for @{$vals}" + ); + }, + ); + } + } +} - # test negative epochs for systems that handle it - [ 1969, 12, 31, 16, 59, 59 ], - [ 1950, 4, 12, 9, 30, 31 ], +subtest( + 'bad times', + sub { + my %bad = ( + 'month too large' => [ 1995, 13, 1, 1, 1, 1 ], + 'day too large' => [ 1995, 2, 30, 1, 1, 1 ], + 'hour too large' => [ 1995, 2, 10, 25, 1, 1 ], + 'minute too large' => [ 1995, 2, 10, 1, 60, 1 ], + 'second too large' => [ 1995, 2, 10, 1, 1, 60 ], + ); + + for my $key ( sort keys %bad ) { + subtest( + $key, + sub { + my ( $year, $mon, $mday, $hour, $min, $sec ) + = @{ $bad{$key} }; + $mon--; + + local $@ = undef; + eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; + + like( + $@, qr/.*out of range.*/, + "invalid time caused an error - @{$bad{$key}}" + ); + } + ); + } + }, ); -# Leap year tests -my @years = ( - [ 1900 => 0 ], - [ 1947 => 0 ], - [ 1996 => 1 ], - [ 2000 => 1 ], - [ 2100 => 0 ], +subtest( + 'diff between two calls', + sub { + is( + timelocal( 0, 0, 1, 1, 0, 90 ) - timelocal( 0, 0, 0, 1, 0, 90 ), + 3600, + 'one hour difference between two calls to timelocal' + ); + + is( + timelocal( 1, 2, 3, 1, 0, 100 ) + - timelocal( 1, 2, 3, 31, 11, 99 ), + 24 * 3600, + 'one day difference between two calls to timelocal' + ); + + # Diff beween Jan 1, 1980 and Mar 1, 1980 = (31 + 29 = 60 days) + is( + timegm( 0, 0, 0, 1, 2, 80 ) - timegm( 0, 0, 0, 1, 0, 80 ), + 60 * 24 * 3600, + '60 day difference between two calls to timegm' + ); + }, ); -# Use 3 days before the start of the epoch because with Borland on -# Win32 it will work for -3600 _if_ your time zone is +01:00 (or -# greater). -my $neg_epoch_ok = defined( ( localtime(-259200) )[0] ) ? 1 : 0; - -# use vmsish 'time' makes for oddness around the Unix epoch -if ( $^O eq 'VMS' ) { - $time[0][2]++; - $neg_epoch_ok = 0; # time_t is unsigned -} - -my $epoch_is_64 - = eval { $Config{ivsize} == 8 && ( gmtime 2**40 )[5] == 34912 }; - -for ( @time, @neg_time ) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; - $year -= 1900; - $mon--; - -SKIP: { - skip '1970 test on VOS fails.', 12 - if $^O eq 'vos' && $year == 70; - skip 'this platform does not support negative epochs.', 12 - if $year < 70 && !$neg_epoch_ok; - - # Test timelocal() +subtest( + 'DST transition bug - https://rt.perl.org/Ticket/Display.html?id=19393', + sub { + # At a DST transition, the clock skips forward, eg from 01:59:59 to + # 03:00:00. In this case, 02:00:00 is an invalid time, and should be + # treated like 03:00:00 rather than 01:00:00 - negative zone offsets + # used to do the latter. { - my $year_in = $year < 70 ? $year + 1900 : $year; - my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year_in ); - - my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); + my $hour = ( localtime( timelocal( 0, 0, 2, 7, 3, 102 ) ) )[2]; - is( $s, int($sec), "timelocal second for @$_" ); - is( $m, $min, "timelocal minute for @$_" ); - is( $h, $hour, "timelocal hour for @$_" ); - is( $D, $mday, "timelocal day for @$_" ); - is( $M, $mon, "timelocal month for @$_" ); - is( $Y, $year, "timelocal year for @$_" ); + # testers in US/Pacific should get 3, + # other testers should get 2 + ok( $hour == 2 || $hour == 3, 'hour should be 2 or 3' ); } + }, +); - # Test timegm() - { - my $year_in = $year < 70 ? $year + 1900 : $year; - my $time = timegm( $sec, $min, $hour, $mday, $mon, $year_in ); - - my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); - - is( $s, int($sec), "timegm second for @$_" ); - is( $m, $min, "timegm minute for @$_" ); - is( $h, $hour, "timegm hour for @$_" ); - is( $D, $mday, "timegm day for @$_" ); - is( $M, $mon, "timegm month for @$_" ); - is( $Y, $year, "timegm year for @$_" ); +subtest( + 'Time::Local::_is_leap_year', + sub { + my @years = ( + [ 1900 => 0 ], + [ 1947 => 0 ], + [ 1996 => 1 ], + [ 2000 => 1 ], + [ 2100 => 0 ], + ); + + for my $p (@years) { + my ( $year, $is_leap_year ) = @$p; + + my $string = $is_leap_year ? 'is' : 'is not'; + ## no critic (Subroutines::ProtectPrivateSubs) + is( + Time::Local::_is_leap_year($year), $is_leap_year, + "$year $string a leap year" + ); } } -} - -for (@bad_time) { - my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; - $year -= 1900; - $mon--; - - eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; - - like( $@, qr/.*out of range.*/, 'invalid time caused an error' ); -} - -{ - is( - timelocal( 0, 0, 1, 1, 0, 90 ) - timelocal( 0, 0, 0, 1, 0, 90 ), 3600, - 'one hour difference between two calls to timelocal' - ); - - is( - timelocal( 1, 2, 3, 1, 0, 100 ) - timelocal( 1, 2, 3, 31, 11, 99 ), - 24 * 3600, - 'one day difference between two calls to timelocal' - ); - - # Diff beween Jan 1, 1980 and Mar 1, 1980 = (31 + 29 = 60 days) - is( - timegm( 0, 0, 0, 1, 2, 80 ) - timegm( 0, 0, 0, 1, 0, 80 ), - 60 * 24 * 3600, - '60 day difference between two calls to timegm' - ); -} - -# bugid #19393 -# At a DST transition, the clock skips forward, eg from 01:59:59 to -# 03:00:00. In this case, 02:00:00 is an invalid time, and should be -# treated like 03:00:00 rather than 01:00:00 - negative zone offsets used -# to do the latter -{ - my $hour = ( localtime( timelocal( 0, 0, 2, 7, 3, 102 ) ) )[2]; - - # testers in US/Pacific should get 3, - # other testers should get 2 - ok( $hour == 2 || $hour == 3, 'hour should be 2 or 3' ); -} - -for my $p (@years) { - my ( $year, $is_leap_year ) = @$p; - - my $string = $is_leap_year ? 'is' : 'is not'; - ## no critic (Subroutines::ProtectPrivateSubs) - is( - Time::Local::_is_leap_year($year), $is_leap_year, - "$year $string a leap year" - ); -} - -SKIP: -{ - skip 'this platform does not support negative epochs.', 6 - unless $neg_epoch_ok; - - eval { timegm( 0, 0, 0, 29, 1, 1900 ) }; - like( - $@, qr/Day '29' out of range 1\.\.28/, - 'does not accept leap day in 1900' - ); - - eval { timegm( 0, 0, 0, 29, 1, 200 ) }; - like( - $@, qr/Day '29' out of range 1\.\.28/, - 'does not accept leap day in 2100 (year passed as 200)' - ); - - eval { timegm( 0, 0, 0, 29, 1, 0 ) }; - is( $@, q{}, 'no error with leap day of 2000 (year passed as 0)' ); - - eval { timegm( 0, 0, 0, 29, 1, 1904 ) }; - is( $@, q{}, 'no error with leap day of 1904' ); - - eval { timegm( 0, 0, 0, 29, 1, 4 ) }; - is( $@, q{}, 'no error with leap day of 2004 (year passed as 4)' ); - - eval { timegm( 0, 0, 0, 29, 1, 96 ) }; - is( $@, q{}, 'no error with leap day of 1996 (year passed as 96)' ); -} - -SKIP: -{ - skip 'These tests require a system with 64-bit time_t.', 3 - unless $epoch_is_64; - - is( - timegm( 8, 14, 3, 19, 0, ( 1900 + 138 ) ), 2**31, - 'can call timegm for 2**31 epoch seconds' - ); - is( - timegm( 16, 28, 6, 7, 1, ( 1900 + 206 ) ), 2**32, - 'can call timegm for 2**32 epoch seconds (on a 64-bit system)' - ); - is( - timegm( 16, 36, 0, 20, 1, ( 34912 + 1900 ) ), 2**40, - 'can call timegm for 2**40 epoch seconds (on a 64-bit system)' - ); -} - -SKIP: -{ - skip 'These tests only run for the package maintainer.', 8 - unless $ENV{MAINTAINER}; - - require POSIX; - - local $ENV{TZ} = 'Europe/Vienna'; - POSIX::tzset(); - - # 2001-10-28 02:30:00 - could be either summer or standard time, - # prefer earlier of the two, in this case summer - my $time = timelocal( 0, 30, 2, 28, 9, 101 ); - is( - $time, 1004229000, - 'timelocal prefers earlier epoch in the presence of a DST change' - ); - - local $ENV{TZ} = 'America/Chicago'; - POSIX::tzset(); - - # Same local time in America/Chicago. There is a transition here - # as well. - $time = timelocal( 0, 30, 1, 28, 9, 101 ); - is( - $time, 1004250600, - 'timelocal prefers earlier epoch in the presence of a DST change' - ); - - $time = timelocal( 0, 30, 2, 1, 3, 101 ); - is( - $time, 986113800, - 'timelocal for non-existent time gives you the time one hour later' - ); - - local $ENV{TZ} = 'Australia/Sydney'; - POSIX::tzset(); - - # 2001-03-25 02:30:00 in Australia/Sydney. This is the transition - # _to_ summer time. The southern hemisphere transitions are - # opposite those of the northern. - $time = timelocal( 0, 30, 2, 25, 2, 101 ); - is( - $time, 985447800, - 'timelocal prefers earlier epoch in the presence of a DST change' - ); - - $time = timelocal( 0, 30, 2, 28, 9, 101 ); - is( - $time, 1004200200, - 'timelocal for non-existent time gives you the time one hour later' - ); +); - local $ENV{TZ} = 'Europe/London'; - POSIX::tzset(); - $time = timelocal( localtime(1111917720) ); - is( - $time, 1111917720, - 'timelocal for round trip bug on date of DST change for Europe/London' - ); +subtest( + 'negative epochs', + sub { + plan skip_all => 'this platform does not support negative epochs.' + unless $neg_epoch_ok; + + local $@ = undef; + eval { timegm( 0, 0, 0, 29, 1, 1900 ) }; + like( + $@, qr/Day '29' out of range 1\.\.28/, + 'does not accept leap day in 1900' + ); + + local $@ = undef; + eval { timegm( 0, 0, 0, 29, 1, 200 ) }; + like( + $@, qr/Day '29' out of range 1\.\.28/, + 'does not accept leap day in 2100 (year passed as 200)' + ); + + local $@ = undef; + eval { timegm( 0, 0, 0, 29, 1, 0 ) }; + is( + $@, q{}, + 'no error with leap day of 2000 (year passed as 0)' + ); + + local $@ = undef; + eval { timegm( 0, 0, 0, 29, 1, 1904 ) }; + is( $@, q{}, 'no error with leap day of 1904' ); + + local $@ = undef; + eval { timegm( 0, 0, 0, 29, 1, 4 ) }; + is( + $@, q{}, + 'no error with leap day of 2004 (year passed as 4)' + ); + + local $@ = undef; + eval { timegm( 0, 0, 0, 29, 1, 96 ) }; + is( + $@, q{}, + 'no error with leap day of 1996 (year passed as 96)' + ); + }, +); - # There is no 1:00 AM on this date, as it leaps forward to - # 2:00 on the DST change - this should return 2:00 per the - # docs. - is( - ( localtime( timelocal( 0, 0, 1, 27, 2, 2005 ) ) )[2], 2, - 'hour is 2 when given 1:00 AM on Europe/London date change' - ); +subtest( + 'Large epoch values', + sub { + plan skip_all => 'These tests require support for large epoch values' + unless $large_epoch_ok; + + is( + timegm( 8, 14, 3, 19, 0, 2038 ), 2**31, + 'can call timegm for 2**31 epoch seconds' + ); + is( + timegm( 16, 28, 6, 7, 1, 2106 ), 2**32, + 'can call timegm for 2**32 epoch seconds (on a 64-bit system)' + ); + is( + timegm( 16, 36, 0, 20, 1, 36812 ), 2**40, + 'can call timegm for 2**40 epoch seconds (on a 64-bit system)' + ); + }, +); - is( - ( localtime( timelocal( 0, 0, 2, 27, 2, 2005 ) ) )[2], 2, - 'hour is 2 when given 2:00 AM on Europe/London date change' - ); -} +subtest( + '2-digit years', + sub { + my $current_year = ( localtime() )[5]; + my $pre_break = ( $current_year + 49 ) - 100; + my $break = ( $current_year + 50 ) - 100; + my $post_break = ( $current_year + 51 ) - 100; + + subtest( + 'legacy year munging', + sub { + plan skip_all => 'Requires support for an large epoch values' + unless $large_epoch_ok; + + is( + ( + ( + localtime( + timelocal( 0, 0, 0, 1, 1, $pre_break ) + ) + )[5] + ), + $pre_break + 100, + "year $pre_break is treated as next century", + ); + is( + ( + ( localtime( timelocal( 0, 0, 0, 1, 1, $break ) ) )[5] + ), + $break + 100, + "year $break is treated as next century", + ); + is( + ( + ( + localtime( + timelocal( 0, 0, 0, 1, 1, $post_break ) + ) + )[5] + ), + $post_break, + "year $post_break is treated as current century", + ); + } + ); + + subtest( + 'modern', + sub { + plan skip_all => + 'Requires negative epoch support and large epoch support' + unless $neg_epoch_ok && $large_epoch_ok; + + is( + ( + ( + localtime( + timelocal_modern( 0, 0, 0, 1, 1, $pre_break ) + ) + )[5] + ) + 1900, + $pre_break, + "year $pre_break is treated as year $pre_break", + ); + is( + ( + ( + localtime( + timelocal_modern( 0, 0, 0, 1, 1, $break ) + ) + )[5] + ) + 1900, + $break, + "year $break is treated as year $break", + ); + is( + ( + ( + localtime( + timelocal_modern( + 0, 0, 0, 1, 1, $post_break + ) + ) + )[5] + ) + 1900, + $post_break, + "year $post_break is treated as year $post_break", + ); + }, + ); + }, +); done_testing(); diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cu.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cu.pl new file mode 100644 index 00000000000..64557b7afdc --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cu.pl @@ -0,0 +1,174 @@ ++{ + locale_version => 1.27, + upper_before_lower => 1, + backwards => 2, + suppress => [0x0418, 0x0438], + entry => <<'ENTRY', # for DUCET v10.0.0 +0487 ; [.0000.0000.0000] # COMBINING CYRILLIC POKRYTIE +A67C ; [.0000.0000.0000] # COMBINING CYRILLIC KAVYKA +A67E ; [.0000.0000.0000] # CYRILLIC KAVYKA +0485 ; [.0000.0021.0000][.0000.00A1.0002][.0000.0021.0000] # COMBINING CYRILLIC DASIA PNEUMATA +0486 ; [.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000] # COMBINING CYRILLIC PSILI PNEUMATA +0301 ; [.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # COMBINING ACUTE ACCENT +00E1 ; [.1CAD.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH ACUTE +00C1 ; [.1CAD.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH ACUTE +00E9 ; [.1D10.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH ACUTE +00C9 ; [.1D10.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH ACUTE +00ED ; [.1D98.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH ACUTE +00CD ; [.1D98.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH ACUTE +00F3 ; [.1E43.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH ACUTE +00D3 ; [.1E43.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH ACUTE +00FA ; [.1F1B.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH ACUTE +00DA ; [.1F1B.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH ACUTE +00FD ; [.1F71.0020.0002][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH ACUTE +00DD ; [.1F71.0020.0008][.0000.0021.0000][.0000.00A3.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH ACUTE +0300 ; [.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # COMBINING GRAVE ACCENT +00E0 ; [.1CAD.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH GRAVE +00C0 ; [.1CAD.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH GRAVE +00E8 ; [.1D10.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH GRAVE +00C8 ; [.1D10.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH GRAVE +00EC ; [.1D98.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH GRAVE +00CC ; [.1D98.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH GRAVE +00F2 ; [.1E43.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH GRAVE +00D2 ; [.1E43.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH GRAVE +00F9 ; [.1F1B.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH GRAVE +00D9 ; [.1F1B.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH GRAVE +1EF3 ; [.1F71.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH GRAVE +1EF2 ; [.1F71.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH GRAVE +0311 ; [.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # COMBINING INVERTED BREVE +0483 ; [.0000.0021.0000][.0000.00A6.0002][.0000.0021.0000] # COMBINING CYRILLIC TITLO +0306 ; [.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # COMBINING BREVE +0308 ; [.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # COMBINING DIAERESIS +00E4 ; [.1CAD.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1CAD.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER A WITH DIAERESIS +00EB ; [.1D10.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER E WITH DIAERESIS +00CB ; [.1D10.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER E WITH DIAERESIS +00EF ; [.1D98.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER I WITH DIAERESIS +00CF ; [.1D98.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER I WITH DIAERESIS +00F6 ; [.1E43.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.1E43.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER O WITH DIAERESIS +00FC ; [.1F1B.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.1F1B.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER U WITH DIAERESIS +00FF ; [.1F71.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN SMALL LETTER Y WITH DIAERESIS +0178 ; [.1F71.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # LATIN CAPITAL LETTER Y WITH DIAERESIS +030F ; [.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # COMBINING DOUBLE GRAVE ACCENT +2DF6 ; [.0000.0021.0000][.0000.00A9.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER A +2DE0 ; [.0000.0021.0000][.0000.00AA.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER BE +2DE1 ; [.0000.0021.0000][.0000.00AB.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER VE +2DE2 ; [.0000.0021.0000][.0000.00AC.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER GHE +2DE3 ; [.0000.0021.0000][.0000.00AD.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER DE +2DF7 ; [.0000.0021.0000][.0000.00AE.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER IE +A674 ; [.0000.0021.0000][.0000.00AF.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER UKRAINIAN IE +2DE4 ; [.0000.0021.0000][.0000.00B0.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER ZHE +2DE5 ; [.0000.0021.0000][.0000.00B1.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER ZE +A675 ; [.0000.0021.0000][.0000.00B2.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER I +A676 ; [.0000.0021.0000][.0000.00B3.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER YI +2DE6 ; [.0000.0021.0000][.0000.00B4.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER KA +2DE7 ; [.0000.0021.0000][.0000.00B5.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER EL +2DE8 ; [.0000.0021.0000][.0000.00B6.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER EM +2DE9 ; [.0000.0021.0000][.0000.00B7.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER EN +2DEA ; [.0000.0021.0000][.0000.00B8.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER O +A67B ; [.0000.0021.0000][.0000.00B9.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER OMEGA +2DEB ; [.0000.0021.0000][.0000.00BA.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER PE +2DEC ; [.0000.0021.0000][.0000.00BB.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER ER +2DED ; [.0000.0021.0000][.0000.00BC.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER ES +2DEE ; [.0000.0021.0000][.0000.00BD.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER TE +2DF9 ; [.0000.0021.0000][.0000.00BE.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER MONOGRAPH UK +A677 ; [.0000.0021.0000][.0000.00BF.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER U +A69E ; [.0000.0021.0000][.0000.00C0.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER EF +2DEF ; [.0000.0021.0000][.0000.00C1.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER HA +2DF0 ; [.0000.0021.0000][.0000.00C2.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER TSE +2DF1 ; [.0000.0021.0000][.0000.00C3.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER CHE +2DF2 ; [.0000.0021.0000][.0000.00C4.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER SHA +2DF3 ; [.0000.0021.0000][.0000.00C5.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER SHCHA +033E ; [.0000.0021.0000][.0000.00C6.0002][.0000.0021.0000] # COMBINING VERTICAL TILDE +A678 ; [.0000.0021.0000][.0000.00C6.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER HARD SIGN +2E2F ; [.0000.0021.0000][.0000.00C6.0002][.0000.0021.0000] # VERTICAL TILDE +A679 ; [.0000.0021.0000][.0000.00C7.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER YERU +A67F ; [.0000.0021.0000][.0000.00C8.0002][.0000.0021.0000] # CYRILLIC PAYEROK +A67D ; [.0000.0021.0000][.0000.00C8.0002][.0000.0021.0000] # COMBINING CYRILLIC PAYEROK +A67A ; [.0000.0021.0000][.0000.00C8.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER SOFT SIGN +2DFA ; [.0000.0021.0000][.0000.00C9.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER YAT +2DFB ; [.0000.0021.0000][.0000.00CA.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER YU +2DFE ; [.0000.0021.0000][.0000.00CB.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER BIG YUS +2DFC ; [.0000.0021.0000][.0000.00CC.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER IOTIFIED A +2DFD ; [.0000.0021.0000][.0000.00CD.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER LITTLE YUS +2DF4 ; [.0000.0021.0000][.0000.00CE.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER FITA +0332 ; [.0000.0021.0000][.0000.00CF.0002][.0000.0021.0000] # COMBINING LOW LINE +2DF5 ; [.0000.0021.0000][.0000.00BC.0002][.0000.0021.0000][.0000.0021.0000][.0000.00BD.0002][.0000.0021.0000] # COMBINING CYRILLIC LETTER ES-TE +1C81 ; [.20B0.0020.0002] # CYRILLIC SMALL LETTER LONG-LEGGED DE +0454 ; [.20C0.0020.001C] # CYRILLIC SMALL LETTER UKRAINIAN IE +0404 ; [.20C0.0020.001D] # CYRILLIC CAPITAL LETTER UKRAINIAN IE +0437 ; [.20DB.0020.0002] # CYRILLIC SMALL LETTER ZE +0417 ; [.20DB.0020.0008] # CYRILLIC CAPITAL LETTER ZE +A641 ; [.20DB.0020.0002] # CYRILLIC SMALL LETTER ZEMLYA +A640 ; [.20DB.0020.0008] # CYRILLIC CAPITAL LETTER ZEMLYA +0456 ; [.20E7.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0406 ; [.20E7.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0457 ; [.20E7.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER YI +0407 ; [.20E7.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER YI +050B ; [.2149.0020.0002] # CYRILLIC SMALL LETTER KOMI NJE +050A ; [.2149.0020.0008] # CYRILLIC CAPITAL LETTER KOMI NJE +047B ; [.214A.0020.0002] # CYRILLIC SMALL LETTER ROUND OMEGA +047A ; [.214A.0020.0008] # CYRILLIC CAPITAL LETTER ROUND OMEGA +043E ; [.214A.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER O +1C82 ; [.214A.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER NARROW O +041E ; [.214A.0020.0020][.0000.0000.001D] # CYRILLIC CAPITAL LETTER O +04E7 ; [.214A.0020.0020][.0000.0000.001C][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER O WITH DIAERESIS +04E6 ; [.214A.0020.0020][.0000.0000.001D][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +0461 ; [.214A.0020.0021][.0000.0000.001C] # CYRILLIC SMALL LETTER OMEGA +0460 ; [.214A.0020.0021][.0000.0000.001D] # CYRILLIC CAPITAL LETTER OMEGA +A64D ; [.214A.0020.0022][.0000.0000.001C] # CYRILLIC SMALL LETTER BROAD OMEGA +A64C ; [.214A.0020.0022][.0000.0000.001D] # CYRILLIC CAPITAL LETTER BROAD OMEGA +047C ; [.214A.0020.0022][.0000.0000.001D][.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000][.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO +047D ; [.214A.0020.0022][.0000.0000.001C][.0000.0021.0000][.0000.00A2.0002][.0000.0021.0000][.0000.0021.0000][.0000.00A5.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER OMEGA WITH TITLO +047E ; [.214A.0020.0021][.0000.0000.001D][.2174.0020.0002] # CYRILLIC CAPITAL LETTER OT +047F ; [.214A.0020.0021][.0000.0000.001C][.2174.0020.0002] # CYRILLIC SMALL LETTER OT +0479 ; [.2180.0020.0002] # CYRILLIC SMALL LETTER UK +0478 ; [.2180.0020.0008] # CYRILLIC CAPITAL LETTER UK +043E 0443 ; [.2180.0020.0002] # <CYRILLIC SMALL LETTER O, CYRILLIC SMALL LETTER U> +1C82 0443 ; [.2180.0020.0002] # <CYRILLIC SMALL LETTER NARROW O, CYRILLIC SMALL LETTER U> +041E 0443 ; [.2180.0020.0008] # <CYRILLIC CAPITAL LETTER O, CYRILLIC SMALL LETTER U> +041E 0423 ; [.2180.0020.0008] # <CYRILLIC CAPITAL LETTER O, CYRILLIC CAPITAL LETTER U> +A64B ; [.2180.0020.0020][.0000.0000.001C] # CYRILLIC SMALL LETTER MONOGRAPH UK +A64A ; [.2180.0020.0020][.0000.0000.001D] # CYRILLIC CAPITAL LETTER MONOGRAPH UK +0443 ; [.2180.0020.0021][.0000.0000.001C] # CYRILLIC SMALL LETTER U +0423 ; [.2180.0020.0021][.0000.0000.001D] # CYRILLIC CAPITAL LETTER U +045E ; [.2180.0020.0021][.0000.0000.001C][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER SHORT U +040E ; [.2180.0020.0021][.0000.0000.001D][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER SHORT U +04F1 ; [.2180.0020.0021][.0000.0000.001C][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER U WITH DIAERESIS +04F0 ; [.2180.0020.0021][.0000.0000.001D][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +04F3 ; [.2180.0020.0021][.0000.0000.001C][.0000.002C.0002] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +04F2 ; [.2180.0020.0021][.0000.0000.001D][.0000.002C.0002] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +04EF ; [.2180.0020.0021][.0000.0000.001C][.0000.0032.0002] # CYRILLIC SMALL LETTER U WITH MACRON +04EE ; [.2180.0020.0021][.0000.0000.001D][.0000.0032.0002] # CYRILLIC CAPITAL LETTER U WITH MACRON +0463 ; [.220C.0020.0002] # CYRILLIC SMALL LETTER YAT +0462 ; [.220C.0020.0008] # CYRILLIC CAPITAL LETTER YAT +046B ; [.2210.0020.0002] # CYRILLIC SMALL LETTER BIG YUS +046A ; [.2210.0020.0008] # CYRILLIC CAPITAL LETTER BIG YUS +A657 ; [.2216.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED A +A656 ; [.2216.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED A +0467 ; [.2216.0020.001C] # CYRILLIC SMALL LETTER LITTLE YUS +0466 ; [.2216.0020.001D] # CYRILLIC CAPITAL LETTER LITTLE YUS +04D1 ; [.2088.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER A WITH BREVE +04D0 ; [.2088.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER A WITH BREVE +04D3 ; [.2088.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER A WITH DIAERESIS +04D2 ; [.2088.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +0450 ; [.20C0.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IE WITH GRAVE +0400 ; [.20C0.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IE WITH GRAVE +04D7 ; [.20C0.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IE WITH BREVE +04D6 ; [.20C0.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IE WITH BREVE +0451 ; [.20C0.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IO +0401 ; [.20C0.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IO +045D ; [.20E6.0020.0002][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER I WITH GRAVE +040D ; [.20E6.0020.0008][.0000.0021.0000][.0000.00A4.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER I WITH GRAVE +04E5 ; [.20E6.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER I WITH DIAERESIS +04E4 ; [.20E6.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +04ED ; [.220B.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER E WITH DIAERESIS +04EC ; [.220B.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +0477 ; [.223D.0020.0002][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0476 ; [.223D.0020.0008][.0000.0021.0000][.0000.00A8.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0439 ; [.20E6.0020.0002][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC SMALL LETTER SHORT I +0419 ; [.20E6.0020.0008][.0000.0021.0000][.0000.00A7.0002][.0000.0021.0000] # CYRILLIC CAPITAL LETTER SHORT I +ENTRY +}; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl index 7efe805badf..9d2cd0e4bc8 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl @@ -1,31 +1,31 @@ +{ - locale_version => 1.25, - entry => <<'ENTRY', # for DUCET v9.0.0 -00E4 ; [.1C48.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1C48.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1C48.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1C48.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1C48.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1C48.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1DDE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1DDE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1DDE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1DDE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1DDE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1DDE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00FC ; [.1EB6.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1EB6.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1EB6.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1EB6.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1EB6.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1EB6.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1EB6.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1EB6.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1EB6.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1EB6.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1EB6.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1EB6.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -00DF ; [.1E71.0020.0002][.1E72.0020.0002] # LATIN SMALL LETTER SHARP S -1E9E ; [.1E71.0020.0008][.1E72.0020.0008] # LATIN CAPITAL LETTER SHARP S + locale_version => 1.27, + entry => <<'ENTRY', # for DUCET v10.0.0 +00E4 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.1CAE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1CAE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +00DF ; [.1ED7.0020.0002][.1ED8.0020.0002] # LATIN SMALL LETTER SHARP S +1E9E ; [.1ED7.0020.0008][.1ED8.0020.0008] # LATIN CAPITAL LETTER SHARP S ENTRY }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/dsb.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/dsb.pl index 3fbe87500bf..2c670873d19 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/dsb.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/dsb.pl @@ -1,59 +1,59 @@ +{ - locale_version => 1.25, - entry => <<'ENTRY', # for DUCET v9.0.0 -010D ; [.1C7B.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1C7B.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1C7B.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1C7B.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0107 ; [.1C7C.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0301 ; [.1C7C.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0063 0341 ; [.1C7C.0020.0002] # LATIN SMALL LETTER C WITH ACUTE -0106 ; [.1C7C.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0301 ; [.1C7C.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -0043 0341 ; [.1C7C.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE -011B ; [.1CAB.0020.0002] # LATIN SMALL LETTER E WITH CARON -0065 030C ; [.1CAB.0020.0002] # LATIN SMALL LETTER E WITH CARON -011A ; [.1CAB.0020.0008] # LATIN CAPITAL LETTER E WITH CARON -0045 030C ; [.1CAB.0020.0008] # LATIN CAPITAL LETTER E WITH CARON -0063 0068 ; [.1D19.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H> -0063 0048 ; [.1D19.0020.0007][.0000.0000.0002] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H> -0043 0068 ; [.1D19.0020.0007][.0000.0000.0008] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H> -0043 0048 ; [.1D19.0020.0008] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H> -0142 ; [.1D76.0020.0002] # LATIN SMALL LETTER L WITH STROKE -006C 0335 ; [.1D76.0020.0002] # LATIN SMALL LETTER L WITH STROKE -0141 ; [.1D76.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE -004C 0335 ; [.1D76.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE -0144 ; [.1DBA.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0301 ; [.1DBA.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -006E 0341 ; [.1DBA.0020.0002] # LATIN SMALL LETTER N WITH ACUTE -0143 ; [.1DBA.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0301 ; [.1DBA.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -004E 0341 ; [.1DBA.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE -0155 ; [.1E34.0020.0002] # LATIN SMALL LETTER R WITH ACUTE -0072 0301 ; [.1E34.0020.0002] # LATIN SMALL LETTER R WITH ACUTE -0072 0341 ; [.1E34.0020.0002] # LATIN SMALL LETTER R WITH ACUTE -0154 ; [.1E34.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE -0052 0301 ; [.1E34.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE -0052 0341 ; [.1E34.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE -0161 ; [.1E72.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1E72.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1E72.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1E72.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -015B ; [.1E73.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -0073 0301 ; [.1E73.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -0073 0341 ; [.1E73.0020.0002] # LATIN SMALL LETTER S WITH ACUTE -015A ; [.1E73.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -0053 0301 ; [.1E73.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -0053 0341 ; [.1E73.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE -017E ; [.1F22.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F22.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F22.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F22.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -017A ; [.1F23.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -007A 0301 ; [.1F23.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -007A 0341 ; [.1F23.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE -0179 ; [.1F23.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -005A 0301 ; [.1F23.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE -005A 0341 ; [.1F23.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE + locale_version => 1.27, + entry => <<'ENTRY', # for DUCET v10.0.0 +010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0107 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0301 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0063 0341 ; [.1CE2.0020.0002] # LATIN SMALL LETTER C WITH ACUTE +0106 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0301 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +0043 0341 ; [.1CE2.0020.0008] # LATIN CAPITAL LETTER C WITH ACUTE +011B ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CARON +0065 030C ; [.1D11.0020.0002] # LATIN SMALL LETTER E WITH CARON +011A ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CARON +0045 030C ; [.1D11.0020.0008] # LATIN CAPITAL LETTER E WITH CARON +0063 0068 ; [.1D7F.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H> +0063 0048 ; [.1D7F.0020.0007][.0000.0000.0002] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H> +0043 0068 ; [.1D7F.0020.0007][.0000.0000.0008] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H> +0043 0048 ; [.1D7F.0020.0008] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H> +0142 ; [.1DDC.0020.0002] # LATIN SMALL LETTER L WITH STROKE +006C 0335 ; [.1DDC.0020.0002] # LATIN SMALL LETTER L WITH STROKE +0141 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE +004C 0335 ; [.1DDC.0020.0008] # LATIN CAPITAL LETTER L WITH STROKE +0144 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0301 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +006E 0341 ; [.1E20.0020.0002] # LATIN SMALL LETTER N WITH ACUTE +0143 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0301 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +004E 0341 ; [.1E20.0020.0008] # LATIN CAPITAL LETTER N WITH ACUTE +0155 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH ACUTE +0072 0301 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH ACUTE +0072 0341 ; [.1E9A.0020.0002] # LATIN SMALL LETTER R WITH ACUTE +0154 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE +0052 0301 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE +0052 0341 ; [.1E9A.0020.0008] # LATIN CAPITAL LETTER R WITH ACUTE +0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +015B ; [.1ED9.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +0073 0301 ; [.1ED9.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +0073 0341 ; [.1ED9.0020.0002] # LATIN SMALL LETTER S WITH ACUTE +015A ; [.1ED9.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +0053 0301 ; [.1ED9.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +0053 0341 ; [.1ED9.0020.0008] # LATIN CAPITAL LETTER S WITH ACUTE +017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +017A ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +007A 0301 ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +007A 0341 ; [.1F89.0020.0002] # LATIN SMALL LETTER Z WITH ACUTE +0179 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +005A 0301 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE +005A 0341 ; [.1F89.0020.0008] # LATIN CAPITAL LETTER Z WITH ACUTE ENTRY }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl index ea81cac4b6f..b0e1eb15d26 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fr_ca.pl @@ -1,4 +1,4 @@ +{ - locale_version => 1.25, + locale_version => 1.27, backwards => 2, }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/he.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/he.pl index f73c8d560cf..ae9392e244a 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/he.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/he.pl @@ -1,7 +1,7 @@ +{ - locale_version => 1.25, - entry => <<'ENTRY', # for DUCET v9.0.0 -05F3 ; [*0305.001F.0002] # HEBREW PUNCTUATION GERESH -05F4 ; [*030C.001F.0002] # HEBREW PUNCTUATION GERSHAYIM + locale_version => 1.27, + entry => <<'ENTRY', # for DUCET v10.0.0 +05F3 ; [*0306.001F.0002] # HEBREW PUNCTUATION GERESH +05F4 ; [*030D.001F.0002] # HEBREW PUNCTUATION GERSHAYIM ENTRY }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lkt.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lkt.pl index dbd577acad0..28febd9b0e3 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lkt.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lkt.pl @@ -1,25 +1,25 @@ +{ - locale_version => 1.25, - entry => <<'ENTRY', # for DUCET v9.0.0 -010D ; [.1C7B.0020.0002] # LATIN SMALL LETTER C WITH CARON -0063 030C ; [.1C7B.0020.0002] # LATIN SMALL LETTER C WITH CARON -010C ; [.1C7B.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -0043 030C ; [.1C7B.0020.0008] # LATIN CAPITAL LETTER C WITH CARON -01E7 ; [.1CF5.0020.0002] # LATIN SMALL LETTER G WITH CARON -0067 030C ; [.1CF5.0020.0002] # LATIN SMALL LETTER G WITH CARON -01E6 ; [.1CF5.0020.0008] # LATIN CAPITAL LETTER G WITH CARON -0047 030C ; [.1CF5.0020.0008] # LATIN CAPITAL LETTER G WITH CARON -021F ; [.1D19.0020.0002] # LATIN SMALL LETTER H WITH CARON -0068 030C ; [.1D19.0020.0002] # LATIN SMALL LETTER H WITH CARON -021E ; [.1D19.0020.0008] # LATIN CAPITAL LETTER H WITH CARON -0048 030C ; [.1D19.0020.0008] # LATIN CAPITAL LETTER H WITH CARON -0161 ; [.1E72.0020.0002] # LATIN SMALL LETTER S WITH CARON -0073 030C ; [.1E72.0020.0002] # LATIN SMALL LETTER S WITH CARON -0160 ; [.1E72.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -0053 030C ; [.1E72.0020.0008] # LATIN CAPITAL LETTER S WITH CARON -017E ; [.1F22.0020.0002] # LATIN SMALL LETTER Z WITH CARON -007A 030C ; [.1F22.0020.0002] # LATIN SMALL LETTER Z WITH CARON -017D ; [.1F22.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON -005A 030C ; [.1F22.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON + locale_version => 1.27, + entry => <<'ENTRY', # for DUCET v10.0.0 +010D ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON +0063 030C ; [.1CE1.0020.0002] # LATIN SMALL LETTER C WITH CARON +010C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +0043 030C ; [.1CE1.0020.0008] # LATIN CAPITAL LETTER C WITH CARON +01E7 ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH CARON +0067 030C ; [.1D5B.0020.0002] # LATIN SMALL LETTER G WITH CARON +01E6 ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH CARON +0047 030C ; [.1D5B.0020.0008] # LATIN CAPITAL LETTER G WITH CARON +021F ; [.1D7F.0020.0002] # LATIN SMALL LETTER H WITH CARON +0068 030C ; [.1D7F.0020.0002] # LATIN SMALL LETTER H WITH CARON +021E ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER H WITH CARON +0048 030C ; [.1D7F.0020.0008] # LATIN CAPITAL LETTER H WITH CARON +0161 ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON +0073 030C ; [.1ED8.0020.0002] # LATIN SMALL LETTER S WITH CARON +0160 ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +0053 030C ; [.1ED8.0020.0008] # LATIN CAPITAL LETTER S WITH CARON +017E ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON +007A 030C ; [.1F88.0020.0002] # LATIN SMALL LETTER Z WITH CARON +017D ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON +005A 030C ; [.1F88.0020.0008] # LATIN CAPITAL LETTER Z WITH CARON ENTRY }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl index af42f2dbf3a..b0082a588d0 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl @@ -1,7 +1,7 @@ +{ - locale_version => 1.25, - entry => <<'ENTRY', # for DUCET v9.0.0 -04D9 ; [.205B.0020.0002] # CYRILLIC SMALL LETTER SCHWA -04D8 ; [.205B.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA + locale_version => 1.27, + entry => <<'ENTRY', # for DUCET v10.0.0 +04D9 ; [.20C1.0020.0002] # CYRILLIC SMALL LETTER SCHWA +04D8 ; [.20C1.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA ENTRY }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vo.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vo.pl index 8b7c4c90048..ec250171e19 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vo.pl +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vo.pl @@ -1,29 +1,29 @@ +{ - locale_version => 1.25, - entry => <<'ENTRY', # for DUCET v9.0.0 -00E4 ; [.1C48.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -0061 0308 ; [.1C48.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS -00C4 ; [.1C48.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -0041 0308 ; [.1C48.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS -01DF ; [.1C48.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01DE ; [.1C48.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -00F6 ; [.1DDE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -006F 0308 ; [.1DDE.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS -00D6 ; [.1DDE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -004F 0308 ; [.1DDE.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS -022B ; [.1DDE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022A ; [.1DDE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -00FC ; [.1EB6.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -0075 0308 ; [.1EB6.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS -00DC ; [.1EB6.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -0055 0308 ; [.1EB6.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS -01DC ; [.1EB6.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DB ; [.1EB6.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01D8 ; [.1EB6.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D7 ; [.1EB6.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D6 ; [.1EB6.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D5 ; [.1EB6.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01DA ; [.1EB6.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01D9 ; [.1EB6.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + locale_version => 1.27, + entry => <<'ENTRY', # for DUCET v10.0.0 +00E4 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +0061 0308 ; [.1CAE.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS +00C4 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +0041 0308 ; [.1CAE.0020.0008] # LATIN CAPITAL LETTER A WITH DIAERESIS +01DF ; [.1CAE.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01DE ; [.1CAE.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +00F6 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +006F 0308 ; [.1E44.0020.0002] # LATIN SMALL LETTER O WITH DIAERESIS +00D6 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +004F 0308 ; [.1E44.0020.0008] # LATIN CAPITAL LETTER O WITH DIAERESIS +022B ; [.1E44.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022A ; [.1E44.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +00FC ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +0075 0308 ; [.1F1C.0020.0002] # LATIN SMALL LETTER U WITH DIAERESIS +00DC ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +0055 0308 ; [.1F1C.0020.0008] # LATIN CAPITAL LETTER U WITH DIAERESIS +01DC ; [.1F1C.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DB ; [.1F1C.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01D8 ; [.1F1C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D7 ; [.1F1C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D6 ; [.1F1C.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D5 ; [.1F1C.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01DA ; [.1F1C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01D9 ; [.1F1C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON ENTRY }; diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cu.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cu.t new file mode 100644 index 00000000000..6df858b8705 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cu.t @@ -0,0 +1,530 @@ + +BEGIN { + unless ('A' eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate cannot pack a Unicode code point\n"; + exit 0; + } + unless (0x41 == unpack('U', 'A')) { + print "1..0 # Unicode::Collate cannot get a Unicode code point\n"; + exit 0; + } + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use strict; +use warnings; +BEGIN { $| = 1; print "1..616\n"; } +my $count = 0; +sub ok ($;$) { + my $p = my $r = shift; + if (@_) { + my $x = shift; + $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x; + } + print $p ? "ok" : "not ok", ' ', ++$count, "\n"; +} + +use Unicode::Collate::Locale; + +ok(1); + +######################### + +my $objCu = Unicode::Collate::Locale-> + new(locale => 'CU', normalization => undef); + +ok($objCu->getlocale, 'cu'); + +# 2 + +### diacritical marks and combining letters ### + +# tailored secondary collation elements +my @sec = ( + "\x{487}", "\x{485}", "\x{486}", "\x{301}", "\x{300}", "\x{311}", + "\x{483}", "\x{306}", "\x{308}", "\x{2DF6}", "\x{2DE0}", "\x{2DE1}", + "\x{2DE2}", "\x{2DE3}", "\x{2DF7}", "\x{A674}", "\x{2DE4}", "\x{2DE5}", + "\x{A675}", "\x{A676}", "\x{2DE6}", "\x{2DE7}", "\x{2DE8}", "\x{2DE9}", + "\x{2DEA}", "\x{A67B}", "\x{2DEB}", "\x{2DEC}", "\x{2DED}", "\x{2DEE}", + "\x{2DF9}", "\x{A677}", "\x{A69E}", "\x{2DEF}", "\x{2DF0}", "\x{2DF1}", + "\x{2DF2}", "\x{2DF3}", "\x{33E}", "\x{A679}", "\x{A67F}", "\x{2DFA}", + "\x{2DFB}", "\x{2DFE}", "\x{2DFC}", "\x{2DFD}", "\x{2DF4}", "\x{332}", + "\x{327}", "\x{328}" # CEDILLA and OGONEK (not tailored) +); + +$objCu->change(level => 1); + +for (my $i = 1; $i < @sec; $i++) { + ok($objCu->eq("a$sec[$i-1]", "a$sec[$i]")); +} + +# 51 + +$objCu->change(level => 2); + +for (my $i = 1; $i < @sec; $i++) { + ok($objCu->lt("a$sec[$i-1]", "a$sec[$i]")); +} + +ok($objCu->gt("a\x{309A}", "a\x{3099}")); # KANA VOICED and SEMI-VOICED + +for (my $i = 1; $i < @sec; $i++) { + ok($objCu->lt("a\x{309A}b$sec[$i-1]", "a\x{3099}b$sec[$i]")); +} + +# 150 + +$objCu->change(backwards => undef); + +for (my $i = 1; $i < @sec; $i++) { + ok($objCu->lt("a$sec[$i-1]", "a$sec[$i]")); +} + +ok($objCu->gt("a\x{309A}", "a\x{3099}")); # KANA VOICED and SEMI-VOICED + +for (my $i = 1; $i < @sec; $i++) { + ok($objCu->gt("a\x{309A}b$sec[$i-1]", "a\x{3099}b$sec[$i]")); +} + +# 249 + +$objCu->change(level => 3); + +ok($objCu->eq("", "\x{0487}")); +ok($objCu->eq("", "\x{A67C}")); +ok($objCu->eq("", "\x{A67E}")); + +ok($objCu->eq("a\x{487}", "a\x{A67C}")); +ok($objCu->eq("a\x{487}", "a\x{A67E}")); +ok($objCu->eq("a\x{308}", "a\x{30F}")); +ok($objCu->eq("a\x{33E}", "a\x{A678}")); +ok($objCu->eq("a\x{33E}", "a\x{2E2F}")); +ok($objCu->eq("a\x{A67F}","a\x{A67D}")); +ok($objCu->eq("a\x{A67F}","a\x{A67A}")); + +ok($objCu->eq("a\x{2DF5}","a\x{2DED}\x{2DEE}")); + +# 260 + +### normal letters ### + +$objCu->change(level => 1); + +ok($objCu->lt("\x{410}z", "\x{411}")); +ok($objCu->lt("\x{411}z", "\x{412}")); +ok($objCu->lt("\x{412}z", "\x{413}")); +ok($objCu->lt("\x{413}z", "\x{414}")); +ok($objCu->lt("\x{414}z", "\x{415}")); +ok($objCu->lt("\x{415}z", "\x{416}")); +ok($objCu->lt("\x{416}z", "\x{405}")); # Dze +ok($objCu->lt("\x{405}z", "\x{417}")); +ok($objCu->lt("\x{417}z", "\x{418}")); +ok($objCu->lt("\x{418}z", "\x{406}")); # Byel-Ukr I +ok($objCu->lt("\x{406}z", "\x{41a}")); +ok($objCu->lt("\x{41a}z", "\x{41b}")); +ok($objCu->lt("\x{41b}z", "\x{41c}")); +ok($objCu->lt("\x{41c}z", "\x{41d}")); +ok($objCu->lt("\x{41d}z", "\x{40a}")); # Nje +ok($objCu->lt("\x{40a}z", "\x{50a}")); # Komi Nje +ok($objCu->lt("\x{50a}z", "\x{41e}")); +ok($objCu->lt("\x{41e}z", "\x{41f}")); +ok($objCu->lt("\x{41f}z", "\x{420}")); +ok($objCu->lt("\x{420}z", "\x{421}")); +ok($objCu->lt("\x{421}z", "\x{422}")); +ok($objCu->lt("\x{422}z", "\x{40b}")); # Tshe +ok($objCu->lt("\x{40b}z", "\x{423}")); +ok($objCu->lt("\x{423}z", "\x{424}")); +ok($objCu->lt("\x{424}z", "\x{425}")); +ok($objCu->lt("\x{425}z", "\x{426}")); +ok($objCu->lt("\x{426}z", "\x{427}")); +ok($objCu->lt("\x{427}z", "\x{428}")); +ok($objCu->lt("\x{428}z", "\x{429}")); +ok($objCu->lt("\x{429}z", "\x{42a}")); +ok($objCu->lt("\x{42a}z", "\x{42b}")); +ok($objCu->lt("\x{42b}z", "\x{42c}")); +ok($objCu->lt("\x{42c}z", "\x{42d}")); +ok($objCu->lt("\x{42d}z", "\x{462}")); # Yat +ok($objCu->lt("\x{462}z", "\x{42e}")); +ok($objCu->lt("\x{42e}z", "\x{46a}")); # Big Yus +ok($objCu->lt("\x{46a}z", "\x{42f}")); +ok($objCu->lt("\x{42f}z", "\x{466}")); # Little Yus +ok($objCu->lt("\x{466}z", "\x{46e}")); # Ksi +ok($objCu->lt("\x{46e}z", "\x{470}")); # Psi +ok($objCu->lt("\x{470}z", "\x{472}")); # Fita +ok($objCu->lt("\x{472}z", "\x{474}")); # Izhitsa + +# 302 + +$objCu->change(level => 2); + +ok($objCu->eq("\x{430}", "\x{410}")); +ok($objCu->eq("\x{431}", "\x{411}")); +ok($objCu->eq("\x{432}", "\x{412}")); +ok($objCu->eq("\x{433}", "\x{413}")); +ok($objCu->eq("\x{434}", "\x{414}")); +ok($objCu->eq("\x{435}", "\x{415}")); +ok($objCu->eq("\x{436}", "\x{416}")); +ok($objCu->eq("\x{455}", "\x{405}")); # Dze +ok($objCu->eq("\x{437}", "\x{417}")); +ok($objCu->eq("\x{438}", "\x{418}")); +ok($objCu->eq("\x{456}", "\x{406}")); # Byel-Ukr I +ok($objCu->eq("\x{43a}", "\x{41a}")); +ok($objCu->eq("\x{43b}", "\x{41b}")); +ok($objCu->eq("\x{43c}", "\x{41c}")); +ok($objCu->eq("\x{43d}", "\x{41d}")); +ok($objCu->eq("\x{45a}", "\x{40a}")); # Nje +ok($objCu->eq("\x{50b}", "\x{50a}")); # Komi Nje +ok($objCu->eq("\x{43e}", "\x{41e}")); +ok($objCu->eq("\x{43f}", "\x{41f}")); +ok($objCu->eq("\x{440}", "\x{420}")); +ok($objCu->eq("\x{441}", "\x{421}")); +ok($objCu->eq("\x{442}", "\x{422}")); +ok($objCu->eq("\x{45b}", "\x{40b}")); # Tshe +ok($objCu->eq("\x{443}", "\x{423}")); +ok($objCu->eq("\x{444}", "\x{424}")); +ok($objCu->eq("\x{445}", "\x{425}")); +ok($objCu->eq("\x{446}", "\x{426}")); +ok($objCu->eq("\x{447}", "\x{427}")); +ok($objCu->eq("\x{448}", "\x{428}")); +ok($objCu->eq("\x{449}", "\x{429}")); +ok($objCu->eq("\x{44a}", "\x{42a}")); +ok($objCu->eq("\x{44b}", "\x{42b}")); +ok($objCu->eq("\x{44c}", "\x{42c}")); +ok($objCu->eq("\x{44d}", "\x{42d}")); +ok($objCu->eq("\x{463}", "\x{462}")); # Yat +ok($objCu->eq("\x{44e}", "\x{42e}")); +ok($objCu->eq("\x{46b}", "\x{46a}")); # Big Yus +ok($objCu->eq("\x{44f}", "\x{42f}")); +ok($objCu->eq("\x{467}", "\x{466}")); # Little Yus +ok($objCu->eq("\x{46f}", "\x{46e}")); # Ksi +ok($objCu->eq("\x{471}", "\x{470}")); # Psi +ok($objCu->eq("\x{473}", "\x{472}")); # Fita +ok($objCu->eq("\x{475}", "\x{474}")); # Izhitsa + +# 345 + +ok($objCu->eq("\x{435}", "\x{454}")); # ie / ukr ie +ok($objCu->eq("\x{435}", "\x{404}")); # ie / UKR IE +ok($objCu->eq("\x{415}", "\x{454}")); # IE / ukr ie +ok($objCu->eq("\x{415}", "\x{404}")); # IE / UKR IE +ok($objCu->eq("\x{454}", "\x{404}")); # ukr ie / UKR IE + +ok($objCu->eq("\x{47B}", "\x{47A}")); # round omega / ROUND OMEGA +ok($objCu->eq("\x{47B}", "\x{43E}")); # round omega / o +ok($objCu->eq("\x{47B}", "\x{41E}")); # round omega / O +ok($objCu->eq("\x{47A}", "\x{43E}")); # ROUND OMEGA / o +ok($objCu->eq("\x{47A}", "\x{41E}")); # ROUND OMEGA / O +ok($objCu->eq("\x{43E}", "\x{461}")); # o / omega +ok($objCu->eq("\x{43E}", "\x{460}")); # o / OMEGA +ok($objCu->eq("\x{41E}", "\x{461}")); # O / omega +ok($objCu->eq("\x{41E}", "\x{460}")); # O / OMEGA +ok($objCu->eq("\x{461}", "\x{460}")); # omega / OMEGA +ok($objCu->eq("\x{461}", "\x{A64D}")); # omega / broad omega +ok($objCu->eq("\x{461}", "\x{A64C}")); # omega / BROAD OMEGA +ok($objCu->eq("\x{460}", "\x{A64D}")); # OMEGA / broad omega +ok($objCu->eq("\x{460}", "\x{A64C}")); # OMEGA / BROAD OMEGA +ok($objCu->eq("\x{A64D}","\x{A64C}")); # broad omega / BROAD OMEGA + +ok($objCu->eq("\x{479}", "\x{478}")); # uk / UK +ok($objCu->eq("\x{479}", "\x{A64B}")); # uk / monograph uk +ok($objCu->eq("\x{479}", "\x{A64A}")); # uk / MONOGRAPH UK +ok($objCu->eq("\x{478}", "\x{A64B}")); # UK / monograph uk +ok($objCu->eq("\x{478}", "\x{A64A}")); # UK / MONOGRAPH UK +ok($objCu->eq("\x{A64B}","\x{A64A}")); # monograph uk / MONOGRAPH UK +ok($objCu->eq("\x{A64B}","\x{443}")); # monograph uk / u +ok($objCu->eq("\x{A64B}","\x{423}")); # monograph uk / U +ok($objCu->eq("\x{A64A}","\x{443}")); # MONOGRAPH UK / u +ok($objCu->eq("\x{A64A}","\x{423}")); # MONOGRAPH UK / U + +ok($objCu->eq("\x{A657}","\x{A656}")); # iotified a / IOTIFIED A +ok($objCu->eq("\x{A657}","\x{467}")); # iotified a / little yus +ok($objCu->eq("\x{A657}","\x{466}")); # iotified a / LITTLE YUS +ok($objCu->eq("\x{A656}","\x{467}")); # IOTIFIED A / little yus +ok($objCu->eq("\x{A656}","\x{466}")); # IOTIFIED A / LITTLE YUS + +# 380 + +$objCu->change(level => 3); + +ok($objCu->gt("\x{430}", "\x{410}")); +ok($objCu->gt("\x{431}", "\x{411}")); +ok($objCu->gt("\x{432}", "\x{412}")); +ok($objCu->gt("\x{433}", "\x{413}")); +ok($objCu->gt("\x{434}", "\x{414}")); +ok($objCu->gt("\x{435}", "\x{415}")); +ok($objCu->gt("\x{436}", "\x{416}")); +ok($objCu->gt("\x{455}", "\x{405}")); # Dze +ok($objCu->gt("\x{437}", "\x{417}")); +ok($objCu->gt("\x{438}", "\x{418}")); +ok($objCu->gt("\x{456}", "\x{406}")); # Byel-Ukr I +ok($objCu->gt("\x{43a}", "\x{41a}")); +ok($objCu->gt("\x{43b}", "\x{41b}")); +ok($objCu->gt("\x{43c}", "\x{41c}")); +ok($objCu->gt("\x{43d}", "\x{41d}")); +ok($objCu->gt("\x{45a}", "\x{40a}")); # Nje +ok($objCu->gt("\x{50b}", "\x{50a}")); # Komi Nje +ok($objCu->gt("\x{43e}", "\x{41e}")); +ok($objCu->gt("\x{43f}", "\x{41f}")); +ok($objCu->gt("\x{440}", "\x{420}")); +ok($objCu->gt("\x{441}", "\x{421}")); +ok($objCu->gt("\x{442}", "\x{422}")); +ok($objCu->gt("\x{45b}", "\x{40b}")); # Tshe +ok($objCu->gt("\x{443}", "\x{423}")); +ok($objCu->gt("\x{444}", "\x{424}")); +ok($objCu->gt("\x{445}", "\x{425}")); +ok($objCu->gt("\x{446}", "\x{426}")); +ok($objCu->gt("\x{447}", "\x{427}")); +ok($objCu->gt("\x{448}", "\x{428}")); +ok($objCu->gt("\x{449}", "\x{429}")); +ok($objCu->gt("\x{44a}", "\x{42a}")); +ok($objCu->gt("\x{44b}", "\x{42b}")); +ok($objCu->gt("\x{44c}", "\x{42c}")); +ok($objCu->gt("\x{44d}", "\x{42d}")); +ok($objCu->gt("\x{463}", "\x{462}")); # Yat +ok($objCu->gt("\x{44e}", "\x{42e}")); +ok($objCu->gt("\x{46b}", "\x{46a}")); # Big Yus +ok($objCu->gt("\x{44f}", "\x{42f}")); +ok($objCu->gt("\x{467}", "\x{466}")); # Little Yus +ok($objCu->gt("\x{46f}", "\x{46e}")); # Ksi +ok($objCu->gt("\x{471}", "\x{470}")); # Psi +ok($objCu->gt("\x{473}", "\x{472}")); # Fita +ok($objCu->gt("\x{475}", "\x{474}")); # Izhitsa + +# 423 + +ok($objCu->lt("\x{435}", "\x{454}")); # ie / ukr ie +ok($objCu->lt("\x{435}", "\x{404}")); # ie / UKR IE +ok($objCu->lt("\x{415}", "\x{454}")); # IE / ukr ie +ok($objCu->lt("\x{415}", "\x{404}")); # IE / UKR IE +ok($objCu->gt("\x{454}", "\x{404}")); # ukr ie / UKR IE + +ok($objCu->gt("\x{47B}", "\x{47A}")); # round omega / ROUND OMEGA +ok($objCu->lt("\x{47B}", "\x{43E}")); # round omega / o +ok($objCu->lt("\x{47B}", "\x{41E}")); # round omega / O +ok($objCu->lt("\x{47A}", "\x{43E}")); # ROUND OMEGA / o +ok($objCu->lt("\x{47A}", "\x{41E}")); # ROUND OMEGA / O +ok($objCu->lt("\x{43E}", "\x{461}")); # o / omega +ok($objCu->lt("\x{43E}", "\x{460}")); # o / OMEGA +ok($objCu->lt("\x{41E}", "\x{461}")); # O / omega +ok($objCu->lt("\x{41E}", "\x{460}")); # O / OMEGA +ok($objCu->gt("\x{461}", "\x{460}")); # omega / OMEGA +ok($objCu->lt("\x{461}", "\x{A64D}")); # omega / broad omega +ok($objCu->lt("\x{461}", "\x{A64C}")); # omega / BROAD OMEGA +ok($objCu->lt("\x{460}", "\x{A64D}")); # OMEGA / broad omega +ok($objCu->lt("\x{460}", "\x{A64C}")); # OMEGA / BROAD OMEGA +ok($objCu->gt("\x{A64D}","\x{A64C}")); # broad omega / BROAD OMEGA + +ok($objCu->gt("\x{479}", "\x{478}")); # uk / UK +ok($objCu->lt("\x{479}", "\x{A64B}")); # uk / monograph uk +ok($objCu->lt("\x{479}", "\x{A64A}")); # uk / MONOGRAPH UK +ok($objCu->lt("\x{478}", "\x{A64B}")); # UK / monograph uk +ok($objCu->lt("\x{478}", "\x{A64A}")); # UK / MONOGRAPH UK +ok($objCu->gt("\x{A64B}","\x{A64A}")); # monograph uk / MONOGRAPH UK +ok($objCu->lt("\x{A64B}","\x{443}")); # monograph uk / u +ok($objCu->lt("\x{A64B}","\x{423}")); # monograph uk / U +ok($objCu->lt("\x{A64A}","\x{443}")); # MONOGRAPH UK / u +ok($objCu->lt("\x{A64A}","\x{423}")); # MONOGRAPH UK / U + +ok($objCu->gt("\x{A657}","\x{A656}")); # iotified a / IOTIFIED A +ok($objCu->lt("\x{A657}","\x{467}")); # iotified a / little yus +ok($objCu->lt("\x{A657}","\x{466}")); # iotified a / LITTLE YUS +ok($objCu->lt("\x{A656}","\x{467}")); # IOTIFIED A / little yus +ok($objCu->lt("\x{A656}","\x{466}")); # IOTIFIED A / LITTLE YUS + +# 458 + +$objCu->change(upper_before_lower => 0); + +ok($objCu->lt("\x{430}", "\x{410}")); +ok($objCu->lt("\x{431}", "\x{411}")); +ok($objCu->lt("\x{432}", "\x{412}")); +ok($objCu->lt("\x{433}", "\x{413}")); +ok($objCu->lt("\x{434}", "\x{414}")); +ok($objCu->lt("\x{435}", "\x{415}")); +ok($objCu->lt("\x{436}", "\x{416}")); +ok($objCu->lt("\x{455}", "\x{405}")); # Dze +ok($objCu->lt("\x{437}", "\x{417}")); +ok($objCu->lt("\x{438}", "\x{418}")); +ok($objCu->lt("\x{456}", "\x{406}")); # Byel-Ukr I +ok($objCu->lt("\x{43a}", "\x{41a}")); +ok($objCu->lt("\x{43b}", "\x{41b}")); +ok($objCu->lt("\x{43c}", "\x{41c}")); +ok($objCu->lt("\x{43d}", "\x{41d}")); +ok($objCu->lt("\x{45a}", "\x{40a}")); # Nje +ok($objCu->lt("\x{50b}", "\x{50a}")); # Komi Nje +ok($objCu->lt("\x{43e}", "\x{41e}")); +ok($objCu->lt("\x{43f}", "\x{41f}")); +ok($objCu->lt("\x{440}", "\x{420}")); +ok($objCu->lt("\x{441}", "\x{421}")); +ok($objCu->lt("\x{442}", "\x{422}")); +ok($objCu->lt("\x{45b}", "\x{40b}")); # Tshe +ok($objCu->lt("\x{443}", "\x{423}")); +ok($objCu->lt("\x{444}", "\x{424}")); +ok($objCu->lt("\x{445}", "\x{425}")); +ok($objCu->lt("\x{446}", "\x{426}")); +ok($objCu->lt("\x{447}", "\x{427}")); +ok($objCu->lt("\x{448}", "\x{428}")); +ok($objCu->lt("\x{449}", "\x{429}")); +ok($objCu->lt("\x{44a}", "\x{42a}")); +ok($objCu->lt("\x{44b}", "\x{42b}")); +ok($objCu->lt("\x{44c}", "\x{42c}")); +ok($objCu->lt("\x{44d}", "\x{42d}")); +ok($objCu->lt("\x{463}", "\x{462}")); # Yat +ok($objCu->lt("\x{44e}", "\x{42e}")); +ok($objCu->lt("\x{46b}", "\x{46a}")); # Big Yus +ok($objCu->lt("\x{44f}", "\x{42f}")); +ok($objCu->lt("\x{467}", "\x{466}")); # Little Yus +ok($objCu->lt("\x{46f}", "\x{46e}")); # Ksi +ok($objCu->lt("\x{471}", "\x{470}")); # Psi +ok($objCu->lt("\x{473}", "\x{472}")); # Fita +ok($objCu->lt("\x{475}", "\x{474}")); # Izhitsa + +# 501 + +ok($objCu->lt("\x{435}", "\x{454}")); # ie / ukr ie +ok($objCu->lt("\x{435}", "\x{404}")); # ie / UKR IE +ok($objCu->lt("\x{415}", "\x{454}")); # IE / ukr ie +ok($objCu->lt("\x{415}", "\x{404}")); # IE / UKR IE +ok($objCu->lt("\x{454}", "\x{404}")); # ukr ie / UKR IE + +ok($objCu->lt("\x{47B}", "\x{47A}")); # round omega / ROUND OMEGA +ok($objCu->lt("\x{47B}", "\x{43E}")); # round omega / o +ok($objCu->lt("\x{47B}", "\x{41E}")); # round omega / O +ok($objCu->lt("\x{47A}", "\x{43E}")); # ROUND OMEGA / o +ok($objCu->lt("\x{47A}", "\x{41E}")); # ROUND OMEGA / O +ok($objCu->lt("\x{43E}", "\x{461}")); # o / omega +ok($objCu->lt("\x{43E}", "\x{460}")); # o / OMEGA +ok($objCu->lt("\x{41E}", "\x{461}")); # O / omega +ok($objCu->lt("\x{41E}", "\x{460}")); # O / OMEGA +ok($objCu->lt("\x{461}", "\x{460}")); # omega / OMEGA +ok($objCu->lt("\x{461}", "\x{A64D}")); # omega / broad omega +ok($objCu->lt("\x{461}", "\x{A64C}")); # omega / BROAD OMEGA +ok($objCu->lt("\x{460}", "\x{A64D}")); # OMEGA / broad omega +ok($objCu->lt("\x{460}", "\x{A64C}")); # OMEGA / BROAD OMEGA +ok($objCu->lt("\x{A64D}","\x{A64C}")); # broad omega / BROAD OMEGA + +ok($objCu->lt("\x{479}", "\x{478}")); # uk / UK +ok($objCu->lt("\x{479}", "\x{A64B}")); # uk / monograph uk +ok($objCu->lt("\x{479}", "\x{A64A}")); # uk / MONOGRAPH UK +ok($objCu->lt("\x{478}", "\x{A64B}")); # UK / monograph uk +ok($objCu->lt("\x{478}", "\x{A64A}")); # UK / MONOGRAPH UK +ok($objCu->lt("\x{A64B}","\x{A64A}")); # monograph uk / MONOGRAPH UK +ok($objCu->lt("\x{A64B}","\x{443}")); # monograph uk / u +ok($objCu->lt("\x{A64B}","\x{423}")); # monograph uk / U +ok($objCu->lt("\x{A64A}","\x{443}")); # MONOGRAPH UK / u +ok($objCu->lt("\x{A64A}","\x{423}")); # MONOGRAPH UK / U + +ok($objCu->lt("\x{A657}","\x{A656}")); # iotified a / IOTIFIED A +ok($objCu->lt("\x{A657}","\x{467}")); # iotified a / little yus +ok($objCu->lt("\x{A657}","\x{466}")); # iotified a / LITTLE YUS +ok($objCu->lt("\x{A656}","\x{467}")); # IOTIFIED A / little yus +ok($objCu->lt("\x{A656}","\x{466}")); # IOTIFIED A / LITTLE YUS + +# 536 + +# equiv. + +ok($objCu->eq("\x{1C81}", "\x{434}")); +ok($objCu->eq("\x{A641}", "\x{437}")); +ok($objCu->eq("\x{A640}", "\x{417}")); +ok($objCu->eq("\x{1C82}", "\x{43E}")); + +ok($objCu->eq("\x{479}", "\x{43E}\x{443}")); +ok($objCu->eq("\x{479}","\x{1C82}\x{443}")); +ok($objCu->eq("\x{478}", "\x{41E}\x{443}")); +ok($objCu->eq("\x{478}", "\x{41E}\x{423}")); + +# 544 + +# decomp. equiv. + +ok($objCu->eq("\x{457}", "\x{456}\x{308}")); +ok($objCu->eq("\x{407}", "\x{406}\x{308}")); +ok($objCu->eq("\x{439}", "\x{438}\x{306}")); +ok($objCu->eq("\x{419}", "\x{418}\x{306}")); +ok($objCu->eq("\x{4E6}", "\x{41E}\x{308}")); +ok($objCu->eq("\x{4E7}", "\x{43E}\x{308}")); +ok($objCu->eq("\x{45E}", "\x{443}\x{306}")); +ok($objCu->eq("\x{40E}", "\x{423}\x{306}")); +ok($objCu->eq("\x{4F1}", "\x{443}\x{308}")); +ok($objCu->eq("\x{4F0}", "\x{423}\x{308}")); +ok($objCu->eq("\x{4F3}", "\x{443}\x{30B}")); +ok($objCu->eq("\x{4F2}", "\x{423}\x{30B}")); +ok($objCu->eq("\x{4EF}", "\x{443}\x{304}")); +ok($objCu->eq("\x{4EE}", "\x{423}\x{304}")); + +ok($objCu->eq("\x{47C}", "\x{A64C}\x{486}\x{311}")); +ok($objCu->eq("\x{47D}", "\x{A64D}\x{486}\x{311}")); +ok($objCu->eq("\x{47E}", "\x{460}\x{442}")); +ok($objCu->eq("\x{47F}", "\x{461}\x{442}")); + +# 562 + +# misc. equiv. + +ok($objCu->eq("\x{4D1}", "\x{430}\x{306}")); +ok($objCu->eq("\x{4D0}", "\x{410}\x{306}")); +ok($objCu->eq("\x{4D3}", "\x{430}\x{308}")); +ok($objCu->eq("\x{4D2}", "\x{410}\x{308}")); +ok($objCu->eq("\x{450}", "\x{435}\x{300}")); +ok($objCu->eq("\x{400}", "\x{415}\x{300}")); +ok($objCu->eq("\x{4D7}", "\x{435}\x{306}")); +ok($objCu->eq("\x{4D6}", "\x{415}\x{306}")); +ok($objCu->eq("\x{451}", "\x{435}\x{308}")); +ok($objCu->eq("\x{401}", "\x{415}\x{308}")); +ok($objCu->eq("\x{45D}", "\x{438}\x{300}")); +ok($objCu->eq("\x{40D}", "\x{418}\x{300}")); +ok($objCu->eq("\x{4E5}", "\x{438}\x{308}")); +ok($objCu->eq("\x{4E4}", "\x{418}\x{308}")); +ok($objCu->eq("\x{4ED}", "\x{44D}\x{308}")); +ok($objCu->eq("\x{4EC}", "\x{42D}\x{308}")); +ok($objCu->eq("\x{477}", "\x{475}\x{30F}")); +ok($objCu->eq("\x{476}", "\x{474}\x{30F}")); + +# 580 + +# latin equiv. + +ok($objCu->eq("a\x{300}", pack('U', 0xE0))); +ok($objCu->eq("A\x{300}", pack('U', 0xC0))); +ok($objCu->eq("e\x{300}", pack('U', 0xE8))); +ok($objCu->eq("E\x{300}", pack('U', 0xC8))); +ok($objCu->eq("i\x{300}", pack('U', 0xEC))); +ok($objCu->eq("I\x{300}", pack('U', 0xCC))); +ok($objCu->eq("o\x{300}", pack('U', 0xF2))); +ok($objCu->eq("O\x{300}", pack('U', 0xD2))); +ok($objCu->eq("u\x{300}", pack('U', 0xF9))); +ok($objCu->eq("U\x{300}", pack('U', 0xD9))); +ok($objCu->eq("y\x{300}", "\x{1EF3}")); +ok($objCu->eq("Y\x{300}", "\x{1EF2}")); + +ok($objCu->eq("a\x{301}", pack('U', 0xE1))); +ok($objCu->eq("A\x{301}", pack('U', 0xC1))); +ok($objCu->eq("e\x{301}", pack('U', 0xE9))); +ok($objCu->eq("E\x{301}", pack('U', 0xC9))); +ok($objCu->eq("i\x{301}", pack('U', 0xED))); +ok($objCu->eq("I\x{301}", pack('U', 0xCD))); +ok($objCu->eq("o\x{301}", pack('U', 0xF3))); +ok($objCu->eq("O\x{301}", pack('U', 0xD3))); +ok($objCu->eq("u\x{301}", pack('U', 0xFA))); +ok($objCu->eq("U\x{301}", pack('U', 0xDA))); +ok($objCu->eq("y\x{301}", pack('U', 0xFD))); +ok($objCu->eq("Y\x{301}", pack('U', 0xDD))); + +ok($objCu->eq("a\x{308}", pack('U', 0xE4))); +ok($objCu->eq("A\x{308}", pack('U', 0xC4))); +ok($objCu->eq("e\x{308}", pack('U', 0xEB))); +ok($objCu->eq("E\x{308}", pack('U', 0xCB))); +ok($objCu->eq("i\x{308}", pack('U', 0xEF))); +ok($objCu->eq("I\x{308}", pack('U', 0xCF))); +ok($objCu->eq("o\x{308}", pack('U', 0xF6))); +ok($objCu->eq("O\x{308}", pack('U', 0xD6))); +ok($objCu->eq("u\x{308}", pack('U', 0xFC))); +ok($objCu->eq("U\x{308}", pack('U', 0xDC))); +ok($objCu->eq("y\x{308}", pack('U', 0xFF))); +ok($objCu->eq("Y\x{308}", "\x{178}")); + +# 616 diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kk.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kk.t index 2d783079bca..081078cfa3f 100644 --- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kk.t +++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kk.t @@ -16,7 +16,7 @@ BEGIN { use strict; use warnings; -BEGIN { $| = 1; print "1..172\n"; } +BEGIN { $| = 1; print "1..184\n"; } my $count = 0; sub ok ($;$) { my $p = my $r = shift; @@ -126,8 +126,18 @@ ok($objKk->lt("\x{42e}z", "\x{42f}")); # 84 +ok($objKk->eq("\x{456}", "\x{457}")); +ok($objKk->eq("\x{406}", "\x{407}")); + +# 86 + $objKk->change(level => 2); +ok($objKk->lt("\x{456}", "\x{457}")); +ok($objKk->lt("\x{406}", "\x{407}")); + +# 88 + ok($objKk->eq("\x{430}", "\x{410}")); ok($objKk->eq("\x{4d9}", "\x{4d8}")); ok($objKk->eq("\x{431}", "\x{411}")); @@ -166,12 +176,15 @@ ok($objKk->eq("\x{449}", "\x{429}")); ok($objKk->eq("\x{44a}", "\x{42a}")); ok($objKk->eq("\x{44b}", "\x{42b}")); ok($objKk->eq("\x{456}", "\x{406}")); +ok($objKk->eq("\x{457}", "\x{407}")); +ok($objKk->eq("\x{457}", "\x{a676}")); +ok($objKk->eq("\x{a676}","\x{407}")); ok($objKk->eq("\x{44c}", "\x{42c}")); ok($objKk->eq("\x{44d}", "\x{42d}")); ok($objKk->eq("\x{44e}", "\x{42e}")); ok($objKk->eq("\x{44f}", "\x{42f}")); -# 126 +# 133 $objKk->change(level => 3); @@ -213,16 +226,21 @@ ok($objKk->lt("\x{449}", "\x{429}")); ok($objKk->lt("\x{44a}", "\x{42a}")); ok($objKk->lt("\x{44b}", "\x{42b}")); ok($objKk->lt("\x{456}", "\x{406}")); +ok($objKk->lt("\x{457}", "\x{407}")); +ok($objKk->lt("\x{457}", "\x{a676}")); +ok($objKk->lt("\x{a676}","\x{407}")); ok($objKk->lt("\x{44c}", "\x{42c}")); ok($objKk->lt("\x{44d}", "\x{42d}")); ok($objKk->lt("\x{44e}", "\x{42e}")); ok($objKk->lt("\x{44f}", "\x{42f}")); -# 168 +# 178 ok($objKk->eq("\x{451}", "\x{435}\x{308}")); ok($objKk->eq("\x{401}", "\x{415}\x{308}")); ok($objKk->eq("\x{439}", "\x{438}\x{306}")); ok($objKk->eq("\x{419}", "\x{418}\x{306}")); +ok($objKk->eq("\x{457}", "\x{456}\x{308}")); +ok($objKk->eq("\x{407}", "\x{406}\x{308}")); -# 172 +# 184 diff --git a/gnu/usr.bin/perl/cpan/autodie/t/recv.t b/gnu/usr.bin/perl/cpan/autodie/t/recv.t index f67b2f81874..97c7a4360dc 100755 --- a/gnu/usr.bin/perl/cpan/autodie/t/recv.t +++ b/gnu/usr.bin/perl/cpan/autodie/t/recv.t @@ -13,6 +13,8 @@ $SIG{PIPE} = 'IGNORE'; my ($sock1, $sock2); socketpair($sock1, $sock2, AF_UNIX, SOCK_STREAM, PF_UNSPEC); +binmode $sock1; +binmode $sock2; my $buffer; send($sock1, "xyz", 0); @@ -40,6 +42,7 @@ SKIP: { eval { my $string = "now is the time..."; open(my $fh, '<', \$string) or die("Can't open \$string for read"); + binmode $fh; # $fh isn't a socket, so this should fail. recv($fh,$buffer,1,0); }; diff --git a/gnu/usr.bin/perl/cpan/parent/t/parent-returns-false.t b/gnu/usr.bin/perl/cpan/parent/t/parent-returns-false.t index d388b4c9ed8..3eabf5377e0 100755 --- a/gnu/usr.bin/perl/cpan/parent/t/parent-returns-false.t +++ b/gnu/usr.bin/perl/cpan/parent/t/parent-returns-false.t @@ -11,7 +11,7 @@ use strict; use Test::More tests => 2; use lib 't/lib'; -use vars qw($got_here); +our $got_here; my $res = eval q{ package MyTest; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/README b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/README index 0e7252daa45..342959585bd 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/README +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/README @@ -37,9 +37,11 @@ man (Pod::Man), text (Pod::Text), color (Pod::Text::Color), overstrike ----- -Copyright 2015 Russ Allbery <rra@cpan.org> +Copyright 2015, 2018 Russ Allbery <rra@cpan.org> Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty. + +SPDX-License-Identifier: FSFAP diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/escape-wrapping b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/escape-wrapping new file mode 100644 index 00000000000..b2145c84c07 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/escape-wrapping @@ -0,0 +1,19 @@ +[name] +Wrapping in the middle of formatting + +[options] +width 60 + +[input] +=over 4 + +=item B<autosetup status> [B<-t>] {B<-a>|[B<-e>|B<-f>|B<-u>] I<hostname> ...} + +=item B<autosetup install -p standard_test_only_trigger host1 host2 host3> + +=back + +[output] + [1mautosetup status[0m [[1m-t[0m] {[1m-a[0m|[[1m-e[0m|[1m-f[0m|[1m-u[0m] [33mhostname[0m ...} + [1mautosetup install -p standard_test_only_trigger host1[0m + [1mhost2 host3[0m diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/tag-width b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/tag-width new file mode 100644 index 00000000000..4a71816c8e9 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/tag-width @@ -0,0 +1,35 @@ +[name] +Tag width with formatting + +[input] +=head1 TAG WIDTH + +=over 10 + +=item 12345678 + +A + +=item B<12345678> + +B + +=item 1Z<> + +C + +=item B<1> + +D + +=back + +[output] +[1mTAG WIDTH[0m + 12345678 A + + [1m12345678[0m B + + 1 C + + [1m1[0m D diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/tag-wrapping b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/tag-wrapping new file mode 100644 index 00000000000..a7975da0d80 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/tag-wrapping @@ -0,0 +1,19 @@ +[name] +Tag width with formatting + +[input] +=head1 TAG WRAPPING + +Per discussion in #124447, this was wrapping before the ellipses. + +=over 4 + +=item B<autosetup print analysis> [B<-e>|B<-f>|B<-u>] I<hostname> ... + +=back + +[output] +[1mTAG WRAPPING[0m + Per discussion in #124447, this was wrapping before the ellipses. + + [1mautosetup print analysis[0m [[1m-e[0m|[1m-f[0m|[1m-u[0m] [33mhostname[0m ... diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/width b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/width new file mode 100644 index 00000000000..6e23bf1a094 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/width @@ -0,0 +1,22 @@ +[name] +Explicit width setting + +[options] +width 40 + +[input] +=head1 WIDTH + +This is a long bit of text that would normally wrap at 78 characters using +the default settings, but will be wrapped at 40 characters due to the +option set. + +=cut + +[output] +[1mWIDTH[0m + This is a long bit of text that + would normally wrap at 78 characters + using the default settings, but will + be wrapped at 40 characters due to + the option set. diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/wrapping b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/wrapping new file mode 100644 index 00000000000..74254660b1b --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/color/wrapping @@ -0,0 +1,11 @@ +[name] +Wrap with format codes + +[input] +=head1 WRAPPING + +B<I<Do>> I<B<not>> B<I<include>> B<I<formatting codes when>> B<I<wrapping>>. + +[output] +[1mWRAPPING[0m + [1m[33mDo[0m[0m [33m[1mnot[0m[0m [1m[33minclude[0m[0m [1m[33mformatting codes when[0m[0m [1m[33mwrapping[0m[0m. diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/error-none b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/error-none index 676fc401d53..0636c3c4767 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/error-none +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/error-none @@ -5,6 +5,8 @@ Suppress errors errors none [input] +=cut + =over 4 =item Foo diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/uppercase-license b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/uppercase-license index 4c02452f064..f49baa33187 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/uppercase-license +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/man/uppercase-license @@ -4,6 +4,16 @@ Uppercase license text [input] =head1 Uppercase License +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -12,9 +22,21 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +SPDX-License-Identifier: MIT + [output] .SH "Uppercase License" .IX Header "Uppercase License" +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the \*(L"Software\*(R"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: +.PP +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +.PP \&\s-1THE SOFTWARE IS PROVIDED \*(L"AS IS\*(R", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -22,3 +44,5 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\s0 +.PP +SPDX-License-Identifier: \s-1MIT\s0 diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/escape-wrapping b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/escape-wrapping new file mode 100644 index 00000000000..197d6e98868 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/escape-wrapping @@ -0,0 +1,19 @@ +[name] +Wrapping in the middle of formatting + +[options] +width 60 + +[input] +=over 4 + +=item B<autosetup status> [B<-t>] {B<-a>|[B<-e>|B<-f>|B<-u>] I<hostname> ...} + +=item B<autosetup install -p standard_test_only_trigger host1 host2 host3> + +=back + +[output] + [1mautosetup status[m [[1m-t[m] {[1m-a[m|[[1m-e[m|[1m-f[m|[1m-u[m] [4mhostname[m ...} + [1mautosetup install -p standard_test_only_trigger host1[m + [1mhost2 host3[m diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/tag-width b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/tag-width new file mode 100644 index 00000000000..3ab75006bce --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/tag-width @@ -0,0 +1,35 @@ +[name] +Tag width with formatting + +[input] +=head1 TAG WIDTH + +=over 10 + +=item 12345678 + +A + +=item B<12345678> + +B + +=item 1Z<> + +C + +=item B<1> + +D + +=back + +[output] +[1mTAG WIDTH[m + 12345678 A + + [1m12345678[m B + + 1 C + + [1m1[m D diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/tag-wrapping b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/tag-wrapping new file mode 100644 index 00000000000..32becfed55a --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/tag-wrapping @@ -0,0 +1,19 @@ +[name] +Tag width with formatting + +[input] +=head1 TAG WRAPPING + +Per discussion in #124447, this was wrapping before the ellipses. + +=over 4 + +=item B<autosetup print analysis> [B<-e>|B<-f>|B<-u>] I<hostname> ... + +=back + +[output] +[1mTAG WRAPPING[m + Per discussion in #124447, this was wrapping before the ellipses. + + [1mautosetup print analysis[m [[1m-e[m|[1m-f[m|[1m-u[m] [4mhostname[m ... diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/width b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/width new file mode 100644 index 00000000000..abc4327f579 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/width @@ -0,0 +1,23 @@ +[name] +Explicit width setting + +[options] +width 40 + +[input] +=head1 WIDTH + +This is a long bit of text that would normally wrap at 78 characters using +the default settings, but will be wrapped at 40 characters due to the +option set. (Regression test for #124447.) + +=cut + +[output] +[1mWIDTH[m + This is a long bit of text that + would normally wrap at 78 characters + using the default settings, but will + be wrapped at 40 characters due to + the option set. (Regression test for + #124447.) diff --git a/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/wrapping b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/wrapping new file mode 100644 index 00000000000..19207616b6d --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/data/snippets/termcap/wrapping @@ -0,0 +1,11 @@ +[name] +Wrap with format codes + +[input] +=head1 WRAPPING + +B<I<Do>> I<B<not>> B<I<include>> B<I<formatting codes when>> B<I<wrapping>>. + +[output] +[1mWRAPPING[m + [1m[4mDo[m[m [4m[1mnot[m[m [1m[4minclude[m[m [1m[4mformatting codes when[m[m [1m[4mwrapping[m[m. diff --git a/gnu/usr.bin/perl/cpan/podlators/t/docs/spdx-license.t b/gnu/usr.bin/perl/cpan/podlators/t/docs/spdx-license.t new file mode 100644 index 00000000000..100adf11eeb --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/docs/spdx-license.t @@ -0,0 +1,120 @@ +#!/usr/bin/perl +# +# Check source files for SPDX-License-Identifier fields. +# +# Examine all source files in a distribution to check that they contain an +# SPDX-License-Identifier field. This does not check the syntax or whether +# the identifiers are valid. +# +# The canonical version of this file is maintained in the rra-c-util package, +# which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>. +# +# Copyright 2018 Russ Allbery <eagle@eyrie.org> +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# SPDX-License-Identifier: MIT + +use 5.006; +use strict; +use warnings; + +use lib 't/lib'; + +use File::Find qw(find); +use Test::More; +use Test::RRA qw(skip_unless_automated); + +# File name (the file without any directory component) and path patterns to +# skip for this check. +## no critic (RegularExpressions::ProhibitFixedStringMatches) +my @IGNORE = ( + qr{ \A Build ( [.] .* )? \z }ixms, # Generated file from Build.PL + qr{ \A LICENSE \z }xms, # Generated file, no license itself + qr{ \A (Changes|NEWS|THANKS) \z }xms, # Package license should be fine + qr{ \A TODO \z }xms, # Package license should be fine + qr{ \A MANIFEST ( [.] .* )? \z }xms, # Package license should be fine + qr{ \A Makefile \z }xms, # Generated file, no license itself + qr{ \A (MY)? META [.] .* }xms, # Generated file, no license itself + qr{ [.] output \z }xms, # Test data + qr{ pod2htm . [.] tmp \z }xms, # Windows pod2html output +); +my @IGNORE_PATHS = ( + qr{ \A [.] / [.] git/ }xms, # Version control files + qr{ \A [.] /_build/ }xms, # Module::Build metadata + qr{ \A [.] /blib/ }xms, # Perl build system artifacts + qr{ \A [.] /cover_db/ }xms, # Artifacts from coverage testing + qr{ \A [.] /docs/metadata/ }xms, # Package license should be fine + qr{ \A [.] /README ( [.] .* )? \z }xms, # Package license should be fine + qr{ \A [.] /share/ }xms, # Package license should be fine + qr{ \A [.] /t/data .* /metadata/ }xms, # Test metadata + qr{ \A [.] /t/data .* /output/ }xms, # Test output +); +## use critic + +# Only run this test during automated testing, since failure doesn't indicate +# any user-noticable flaw in the package itself. +skip_unless_automated('SPDX identifier tests'); + +# Check a single file for an occurrence of the string. +# +# $path - Path to the file +# +# Returns: undef +sub check_file { + my $filename = $_; + my $path = $File::Find::name; + + # Ignore files in the whitelist, binary files, and files under 1KB. The + # latter can be rolled up into the overall project license and the license + # notice may be a substantial portion of the file size. + for my $pattern (@IGNORE) { + return if $filename =~ $pattern; + } + for my $pattern (@IGNORE_PATHS) { + if ($path =~ $pattern) { + $File::Find::prune = 1; + return; + } + } + return if -d $filename; + return if !-T $filename; + return if -s $filename < 1024; + + # Scan the file. + my ($saw_spdx, $skip_spdx); + open(my $file, '<', $filename) or BAIL_OUT("Cannot open $path"); + while (defined(my $line = <$file>)) { + if ($line =~ m{ \b SPDX-License-Identifier: \s+ \S+ }xms) { + $saw_spdx = 1; + last; + } + if ($line =~ m{ no \s SPDX-License-Identifier \s registered }xms) { + $skip_spdx = 1; + last; + } + } + close($file) or BAIL_OUT("Cannot close $path"); + ok($saw_spdx || $skip_spdx, $path); + return; +} + +# Use File::Find to scan all files from the top of the directory. +find(\&check_file, q{.}); +done_testing(); diff --git a/gnu/usr.bin/perl/cpan/podlators/t/docs/urls.t b/gnu/usr.bin/perl/cpan/podlators/t/docs/urls.t new file mode 100644 index 00000000000..a654c5453c2 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/podlators/t/docs/urls.t @@ -0,0 +1,95 @@ +#!/usr/bin/perl +# +# Check URLs in source files. +# +# Examine all source files in a distribution for bad URL patterns and report +# on files that fail this check. Currently, this just checks that all the +# links to www.eyrie.org are https. +# +# The canonical version of this file is maintained in the rra-c-util package, +# which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>. +# +# Copyright 2016 Russ Allbery <eagle@eyrie.org> +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# SPDX-License-Identifier: MIT + +use 5.006; +use strict; +use warnings; + +use lib 't/lib'; + +use File::Find qw(find); +use Test::More; +use Test::RRA qw(skip_unless_automated); + +# Bad patterns to search for. +my @BAD_REGEXES = (qr{ http:// \S+ [.]eyrie[.]org }xms); +my @BAD_STRINGS = qw(rra@stanford.edu); + +# File or directory names to always skip. +my %SKIP = map { $_ => 1 } qw(.git _build blib cover_db); + +# Only run this test during automated testing, since failure doesn't indicate +# any user-noticable flaw in the package itself. +skip_unless_automated('Documentation URL tests'); + +# Scan files for bad URL patterns. This is meant to be run as the wanted +# function from File::Find. +sub check_file { + my $filename = $_; + + # Ignore this check itself (or the non-Perl version of it). Ignore any + # directories or binary files. Ignore and prune any skipped files. + if ($SKIP{$filename}) { + $File::Find::prune = 1; + return; + } + return if -d $filename; + return if !-T $filename; + return if ($filename eq 'urls.t' || $filename eq 'urls-t'); + + # Scan the file. + open(my $fh, '<', $filename) or BAIL_OUT("Cannot open $File::Find::name"); + while (defined(my $line = <$fh>)) { + for my $regex (@BAD_REGEXES) { + if ($line =~ $regex) { + ok(0, "$File::Find::name contains $regex"); + close($fh) or BAIL_OUT("Cannot close $File::Find::name"); + return; + } + } + for my $string (@BAD_STRINGS) { + if (index($line, $string) != -1) { + ok(0, "$File::Find::name contains $string"); + close($fh) or BAIL_OUT("Cannot close $File::Find::name"); + return; + } + } + } + close($fh) or BAIL_OUT("Cannot close $File::Find::name"); + ok(1, $File::Find::name); + return; +} + +# Use File::Find to scan all files from the top of the directory. +find(\&check_file, q{.}); +done_testing(); diff --git a/gnu/usr.bin/perl/cpan/podlators/t/general/basic.t b/gnu/usr.bin/perl/cpan/podlators/t/general/basic.t index 9b676cc8c5e..717e3762dfd 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/general/basic.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/general/basic.t @@ -12,11 +12,13 @@ # the machinery to run small POD snippets through the specific formatter being # tested should probably be used instead. # -# Copyright 2001, 2002, 2004, 2006, 2009, 2012, 2014, 2015 +# Copyright 2001-2002, 2004, 2006, 2009, 2012, 2014-2015, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; @@ -59,13 +61,10 @@ my %OUTPUT = ( 'Pod::Text::Termcap' => File::Spec->catfile('t', 'data', 'basic.cap'), ); -# Options to pass to all formatting modules. Match the pod2text default. -my @OPTIONS = (sentence => 0); - # Walk through teach of the modules and format the sample file, checking to # ensure the results match the pre-generated file. for my $module (sort keys %OUTPUT) { - my $parser = $module->new(@OPTIONS); + my $parser = $module->new(); isa_ok($parser, $module, 'parser object'); # Run the formatting module. Store the output into a Perl variable diff --git a/gnu/usr.bin/perl/cpan/podlators/t/general/filehandle.t b/gnu/usr.bin/perl/cpan/podlators/t/general/filehandle.t index cd6a229c245..42601a05878 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/general/filehandle.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/general/filehandle.t @@ -6,10 +6,12 @@ # Pod::Man and Pod::Text had to implement it directly. Test to be sure it's # working properly. # -# Copyright 2006, 2009, 2012, 2014, 2015, 2016 Russ Allbery <rra@cpan.org> +# Copyright 2006, 2009, 2012, 2014-2016, 2018 Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/general/pod-parser.t b/gnu/usr.bin/perl/cpan/podlators/t/general/pod-parser.t index 95f399fbdcf..9c51aff87a4 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/general/pod-parser.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/general/pod-parser.t @@ -2,10 +2,12 @@ # # Tests for backward compatibility with Pod::Parser. # -# Copyright 2006, 2008, 2009, 2012, 2015 by Russ Allbery <rra@cpan.org> +# Copyright 2006, 2008-2009, 2012, 2015, 2018 by Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man/devise-date.t b/gnu/usr.bin/perl/cpan/podlators/t/man/devise-date.t index 642d08cc4f4..129721323c6 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/man/devise-date.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/man/devise-date.t @@ -5,10 +5,12 @@ # that it's identical. It also tests special handling of the POD_MAN_DATE # environment variable. # -# Copyright 2009, 2014, 2015 Russ Allbery <rra@cpan.org> +# Copyright 2009, 2014-2015, 2018 Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man/heading.t b/gnu/usr.bin/perl/cpan/podlators/t/man/heading.t index 323fd62abf0..9691446b6f6 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/man/heading.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/man/heading.t @@ -2,11 +2,13 @@ # # Additional tests for Pod::Man heading generation. # -# Copyright 2002, 2004, 2006, 2008, 2009, 2012, 2015 +# Copyright 2002, 2004, 2006, 2008-2009, 2012, 2015, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man/no-encode.t b/gnu/usr.bin/perl/cpan/podlators/t/man/no-encode.t index bdd4e683b1e..15522a5d96a 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/man/no-encode.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/man/no-encode.t @@ -3,10 +3,12 @@ # Test for graceful degradation to non-utf8 output without Encode module. # # Copyright 2016 Niko Tyni <ntyni@iki.fi> -# Copyright 2016 Russ Allbery <rra@cpan.org> +# Copyright 2016, 2018 Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man/snippets.t b/gnu/usr.bin/perl/cpan/podlators/t/man/snippets.t index 4fa197a7aab..159887199a4 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/man/snippets.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/man/snippets.t @@ -2,11 +2,13 @@ # # Test Pod::Man behavior with various snippets. # -# Copyright 2002, 2004, 2006, 2008, 2009, 2012, 2013, 2015, 2016 +# Copyright 2002, 2004, 2006, 2008-2009, 2012-2013, 2015-2016, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man/utf8-io.t b/gnu/usr.bin/perl/cpan/podlators/t/man/utf8-io.t index 858f8f7e0af..d1c950076b3 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/man/utf8-io.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/man/utf8-io.t @@ -2,11 +2,13 @@ # # Test Pod::Man UTF-8 handling, with and without PerlIO. # -# Copyright 2002, 2004, 2006, 2008, 2009, 2010, 2012, 2014, 2015 +# Copyright 2002, 2004, 2006, 2008-2010, 2012, 2014-2015, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/parselink/basic.t b/gnu/usr.bin/perl/cpan/podlators/t/parselink/basic.t index d06a3b5ea10..48fbb37f137 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/parselink/basic.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/parselink/basic.t @@ -2,10 +2,12 @@ # # parselink.t -- Tests for Pod::ParseLink. # -# Copyright 2001, 2009 by Russ Allbery <rra@cpan.org> +# Copyright 2001, 2009, 2018 by Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl # The format of each entry in this array is the L<> text followed by the # five-element parse returned by parselink. diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/basic.t b/gnu/usr.bin/perl/cpan/podlators/t/text/basic.t index 1d274c3e5cc..024cc0e0e7f 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/basic.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/basic.t @@ -1,12 +1,14 @@ #!/usr/bin/perl -w # -# text.t -- Additional specialized tests for Pod::Text. +# Additional specialized tests for Pod::Text. # -# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2012 +# Copyright 2002, 2004, 2006-2009, 2012, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl BEGIN { chdir 't' if -d 't'; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/color.t b/gnu/usr.bin/perl/cpan/podlators/t/text/color.t index c2e13335ad5..b7edd48a27b 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/color.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/color.t @@ -1,114 +1,31 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl # -# color.t -- Additional specialized tests for Pod::Text::Color. +# Test Pod::Text::Color behavior with various snippets. # -# Copyright 2002, 2004, 2006, 2009, 2012, 2013 +# Copyright 2002, 2004, 2006, 2009, 2012-2013, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. -BEGIN { - chdir 't' if -d 't'; - if ($ENV{PERL_CORE}) { - @INC = '../lib'; - } - unshift (@INC, '../blib/lib'); - $| = 1; -} - +use 5.006; use strict; +use warnings; -use Test::More; +use lib 't/lib'; -# Skip this test if Term::ANSIColor isn't available. -eval { require Term::ANSIColor }; -if ($@) { - plan skip_all => 'Term::ANSIColor required for Pod::Text::Color'; -} else { - plan tests => 4; -} -require_ok ('Pod::Text::Color'); +use Test::More tests => 11; +use Test::Podlators qw(test_snippet); -# Load tests from the data section below, write the POD to a temporary file, -# convert it, and compare to the expected output. -my $parser = Pod::Text::Color->new; -isa_ok ($parser, 'Pod::Text::Color', 'Parser object'); -my $n = 1; -while (<DATA>) { - next until $_ eq "###\n"; - open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n"; - while (<DATA>) { - last if $_ eq "###\n"; - print TMP $_; - } - close TMP; - open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n"; - $parser->parse_from_file ("tmp$$.pod", \*OUT); - close OUT; - open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n"; - my $output; - { - local $/; - $output = <TMP>; - } - close TMP; - 1 while unlink ("tmp$$.pod", "out$$.tmp"); - my $expected = ''; - while (<DATA>) { - last if $_ eq "###\n"; - $expected .= $_; - } - is ($output, $expected, "Output correct for test $n"); - $n++; +# Load the module. +BEGIN { + use_ok('Pod::Text::Color'); } -# Below the marker are bits of POD and corresponding expected output. This is -# used to test specific features or problems with Pod::Text::Color. The input -# and output are separated by lines containing only ###. - -__DATA__ - -### -=head1 WRAPPING - -B<I<Do>> I<B<not>> B<I<include>> B<I<formatting codes when>> B<I<wrapping>>. -### -[1mWRAPPING[0m - [1m[33mDo[0m[0m [33m[1mnot[0m[0m [1m[33minclude[0m[0m [1m[33mformatting codes when[0m[0m [1m[33mwrapping[0m[0m. - -### - -### -=head1 TAG WIDTH - -=over 10 - -=item 12345678 +# List of snippets run by this test. +my @snippets = qw(escape-wrapping tag-width tag-wrapping width wrapping); -A - -=item B<12345678> - -B - -=item 1Z<> - -C - -=item B<1> - -D - -=back -### -[1mTAG WIDTH[0m - 12345678 A - - [1m12345678[0m B - - 1 C - - [1m1[0m D - -### +# Run all the tests. +for my $snippet (@snippets) { + test_snippet('Pod::Text::Color', "color/$snippet"); +} diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/empty.t b/gnu/usr.bin/perl/cpan/podlators/t/text/empty.t index 0b8823a3e55..e03a03c4a38 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/empty.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/empty.t @@ -1,11 +1,13 @@ #!/usr/bin/perl -w # -# text-empty.t -- Test Pod::Text with a document that produces only errors. +# Test Pod::Text with a document that produces only errors. # -# Copyright 2013 Russ Allbery <rra@cpan.org> +# Copyright 2013, 2018 Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl BEGIN { chdir 't' if -d 't'; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/encoding.t b/gnu/usr.bin/perl/cpan/podlators/t/text/encoding.t index 7fe7401d59b..7a6b6f2801b 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/encoding.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/encoding.t @@ -1,12 +1,14 @@ #!/usr/bin/perl -w # -# text-encoding.t -- Test Pod::Text with various weird encoding combinations. +# Test Pod::Text with various weird encoding combinations. # -# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2012, 2015 +# Copyright 2002, 2004, 2006-2009, 2012, 2015, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl BEGIN { chdir 't' if -d 't'; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/overstrike.t b/gnu/usr.bin/perl/cpan/podlators/t/text/overstrike.t index c5496bb8710..7433264cb3c 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/overstrike.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/overstrike.t @@ -1,12 +1,14 @@ #!/usr/bin/perl -w # -# overstrike.t -- Additional specialized tests for Pod::Text::Overstrike. +# Additional specialized tests for Pod::Text::Overstrike. # -# Copyright 2002, 2004, 2006, 2009, 2012, 2013 +# Copyright 2002, 2004, 2006, 2009, 2012-2013, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl BEGIN { chdir 't' if -d 't'; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/perlio.t b/gnu/usr.bin/perl/cpan/podlators/t/text/perlio.t index c95f682b68a..1b6523d328a 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/perlio.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/perlio.t @@ -1,12 +1,14 @@ #!/usr/bin/perl -w # -# text-perlio.t -- Test Pod::Text with a PerlIO UTF-8 encoding layer. +# Test Pod::Text with a PerlIO UTF-8 encoding layer. # -# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2012, 2014 +# Copyright 2002, 2004, 2006-2010, 2012, 2014, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl BEGIN { chdir 't' if -d 't'; diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/termcap.t b/gnu/usr.bin/perl/cpan/podlators/t/text/termcap.t index 4b30c62fc30..4a9893a9daa 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/termcap.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/termcap.t @@ -1,125 +1,37 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl # -# termcap.t -- Additional specialized tests for Pod::Text::Termcap. +# Test Pod::Text::Termcap behavior with various snippets. # -# Copyright 2002, 2004, 2006, 2009, 2012, 2013, 2014 +# Copyright 2002, 2004, 2006, 2009, 2012-2014, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. -BEGIN { - chdir 't' if -d 't'; - if ($ENV{PERL_CORE}) { - @INC = '../lib'; - } - unshift (@INC, '../blib/lib'); - $| = 1; -} - +use 5.006; use strict; +use warnings; -use File::Spec; -use Test::More tests => 4; +use lib 't/lib'; -BEGIN { use_ok ('Pod::Text::Termcap') } +use Test::More tests => 11; +use Test::Podlators qw(test_snippet); -# Find the path to the test source files. This requires some fiddling when -# these tests are run as part of Perl core. -sub source_path { - my $file = shift; - if ($ENV{PERL_CORE}) { - my $updir = File::Spec->updir; - my $dir = File::Spec->catdir ($updir, 'lib', 'Pod', 't', 'data'); - return File::Spec->catfile ($dir, $file); - } else { - return File::Spec->catfile ('data', $file); - } +# Load the module. +BEGIN { + use_ok('Pod::Text::Termcap'); } # Hard-code a few values to try to get reproducible results. $ENV{COLUMNS} = 80; $ENV{TERM} = 'xterm'; -$ENV{TERMPATH} = source_path ('termcap'); +$ENV{TERMPATH} = File::Spec->catfile('t', 'data', 'termcap'); $ENV{TERMCAP} = 'xterm:co=#80:do=^J:md=\E[1m:us=\E[4m:me=\E[m'; -my $parser = Pod::Text::Termcap->new; -isa_ok ($parser, 'Pod::Text::Termcap', 'Parser module'); -my $n = 1; -while (<DATA>) { - next until $_ eq "###\n"; - open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n"; - while (<DATA>) { - last if $_ eq "###\n"; - print TMP $_; - } - close TMP; - open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n"; - $parser->parse_from_file ("tmp$$.pod", \*OUT); - close OUT; - open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n"; - my $output; - { - local $/; - $output = <TMP>; - } - close TMP; - 1 while unlink ("tmp$$.pod", "out$$.tmp"); - my $expected = ''; - while (<DATA>) { - last if $_ eq "###\n"; - $expected .= $_; - } - is ($output, $expected, "Output correct for test $n"); - $n++; -} - -# Below the marker are bits of POD and corresponding expected output. This is -# used to test specific features or problems with Pod::Text::Termcap. The -# input and output are separated by lines containing only ###. - -__DATA__ - -### -=head1 WRAPPING - -B<I<Do>> I<B<not>> B<I<include>> B<I<formatting codes when>> B<I<wrapping>>. -### -[1mWRAPPING[m - [1m[4mDo[m[m [4m[1mnot[m[m [1m[4minclude[m[m [1m[4mformatting codes when[m[m [1m[4mwrapping[m[m. - -### - -### -=head1 TAG WIDTH - -=over 10 - -=item 12345678 +# List of snippets run by this test. +my @snippets = qw(escape-wrapping tag-width tag-wrapping width wrapping); -A - -=item B<12345678> - -B - -=item 1Z<> - -C - -=item B<1> - -D - -=back -### -[1mTAG WIDTH[m - 12345678 A - - [1m12345678[m B - - 1 C - - [1m1[m D - -### +# Run all the tests. +for my $snippet (@snippets) { + test_snippet('Pod::Text::Termcap', "termcap/$snippet"); +} diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text/utf8.t b/gnu/usr.bin/perl/cpan/podlators/t/text/utf8.t index e468c57d0d2..a04010ea101 100644 --- a/gnu/usr.bin/perl/cpan/podlators/t/text/utf8.t +++ b/gnu/usr.bin/perl/cpan/podlators/t/text/utf8.t @@ -1,12 +1,14 @@ #!/usr/bin/perl -w # -# text-utf8.t -- Test Pod::Text with UTF-8 input. +# Test Pod::Text with UTF-8 input. # -# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2012, 2014 +# Copyright 2002, 2004, 2006-2009, 2012, 2014, 2018 # Russ Allbery <rra@cpan.org> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. +# +# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl BEGIN { chdir 't' if -d 't'; diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t index 2814f0b2153..2c9d8f967c9 100644 --- a/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t +++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t @@ -91,10 +91,11 @@ like($dumpstr{ar_indent_3}, qr/\#0.+'foo'.+\#1.+42/s, "Indent(3) annotates array elements with their indices" ); +sub count_newlines { scalar $_[0] =~ tr/\n// } { no if $] < 5.011, warnings => 'deprecated'; - is(scalar(split("\n" => $dumpstr{ar_indent_2})) + 2, - scalar(split("\n" => $dumpstr{ar_indent_3})), + is(count_newlines($dumpstr{ar_indent_2}) + 2, + count_newlines($dumpstr{ar_indent_3}), "Indent(3) runs 2 lines longer than Indent(2)"); } diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/Changes b/gnu/usr.bin/perl/dist/Devel-PPPort/Changes new file mode 100644 index 00000000000..ce9add54ea0 --- /dev/null +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/Changes @@ -0,0 +1,1003 @@ +Revision history for Devel-PPPort + + 3.52 - 2019-05-14 + + * fix utf8_to_uvchr_buf retval in 5.30 + + 3.51 - 2019-05-01 + + * include the module version in metadata for proper PAUSE indexing + + 3.50 - 2019-04-30 + + * Order warn before uv for packWARN (shown in 5.6.1) + + 3.49 - 2019-04-29 + + * Fix tests for 64bit int, 32bit ptr platforms + + 3.48 - 2019-04-28 + + * Order misc before uv for UNLIKELY (<=5.8.8) + + 3.47 - 2019-04-27 + + * re-fix leaky code (used only in tests) + + 3.46 - 2019-04-26 + + * Fix the isFOO character type classification macros to work properly on + all versions, as follows: + * Fixed isALNUM, isALPHA, isDIGIT, isIDFIRST, isLOWER, and isUPPER on + very early perls to not be locale-dependent + * Fixed isASCII on early perls to work with signed char arguments + * Fixed isCNTRL on early perls to know that DEL is a control + * Fixed isSPACE on perls before 5.20 to know that VERTICAL TAB is a + space + * Added isALPHANUMERIC, synonym for isALNUMC + * Added isIDCONT, to match legal non-initial characters in an + identifier + * Added isOCTAL, to match [0-7] + * Added isWORDCHAR, synonym for isALNUM + * Make all the character classification isFOO macros work on EBCDIC + platforms on all versions + * Added isFOO_A synonyms for all character classification isFOO + macros + * Provide LIKELY/UNLIKELY branch prediction + * Provide av_tindex/av_top_index + * Provide __ASSERT_ for assertions inside macros + * Provide UTF8_SAFE_SKIP + * Provide my_strnlen() + * Provide utf8_to_uvchr_buf() + * Replace utf8_to_uvchr() with a safer version + * Provide UNICODE_REPLACEMENT + +3.45 - 2019-03-19 + + * Restore missing unit tests from the previous release. + +3.44 - 2019-02-20 + + * Fix D_PPP_FIX_UTF8_ERRSV macro to use errsv value from passed argument + +3.43 - 2018-09-19 + + * Fix Devel::PPPort with Visual Studio by quoting $0. + +3.42 - 2018-04-21 + + * Include 'Changes' (this file) in the distribution. + +3.41 - 2018-04-21 + + * Fix security problem: CWE-134: Use of Externally-Controlled Format String. + * Fix WIDEST_UTYPE. + * Add the following functions: + croak_sv, die_sv, mess_sv, warn_sv, mess, vmess, warn_nocontext, + croak_nocontext, croak_no_modify, croak_memory_wrap, croak_xs_usage. + * Delist functions listed as deprecated or unstable. + * (perl #132876) define API macros on if the NEED_ macro is defined. + * (perl #132876) only define croak_xs_usage()'s assert macro if cxu requested. + * (perl #132761) updates for older perls. + * Do not define PERL_MAGIC_qr more times. + * Do not mask Perl_warn_nocontext and Perl_croak_nocontext. + (Fixes compile errors on older threaded Perl versions.) + * Skip ASCII tests on non-ASCII platforms. + * Skip tests invalid on EBCDIC. + * Will now compile under C++11. + * Documentation improvements. + +3.36 - 2017-05-14 + + * Support Perl 5.26.* which no longer has '.' in @INC + +3.35 - 2016-06-17 + + * Fix compilation in bleadperl by removing a bad test. + +3.34 - 2016-06-04 + + * Fix compilation on Windows with certain compilers. + (__attribute__ not recognized. (#GH 36)) + +3.33 - 2016-06-03 + + * Add PERL_OP_PARENT related macros, and cBOOL + * Add SvRXOK/SvRX/PERL_MAGIC_qr + (Thanks to arc) + * sort files from all_files_in_dir (GH #28, https://bugs.debian.org/801523 + (Thanks to ntyni) + * Fix coverity finding in test (GH #25) + (Thanks to jhi) + * Add PERL_UNUSED_RESULT and a test (GH #20) + * Don't redefine MUTABLE_PTR if it's already there (GH #23) + * Add C_ARRAY_LENGTH and C_ARRAY_END (GH #16) + * Fix gv_fetchpvn_flags and add gv_init_pvn (#GH 32) + (Thanks to leont) + * Fix compiler warnings + (Thanks to Dave M.) + +3.32 - 2015-09-30 + + * Lexical topic no longer works as of perl 5.23 + +3.31 - 2015-03-12 + + * Regen todo files to sync with blead + +3.30 - 2015-03-05 + + * Update typemap to account for STRLEN added in + 3.29, which prevented compiling on older Perls + +3.29 - 2015-03-05 + + * Fix issue found by Coverity + (Thanks to Dave M. for patch) + +3.28 - 2015-01-16 + + * Update MANIFEST for regened base/todo files + +3.27 - 2015-01-13 + + * Regen base and todo files. + * Fix isASCII and isCNTRL for <5.6.0 + * Other minor fixups. + + (Thanks to mhx for all of the work on this release) + +3.26 - 2015-01-07 + + * Silence some warnings on compilation in perl core + (Thanks to Dave M. for patches) + +3.25 - 2014-12-02 + + * Add caller_cx (works back to Perl 5.6.0) + (Thanks to Ben Morrow for patch) + * Silence compiler and coverity warnings + (Thanks to jhi for patches) + +3.24 - 2014-05-08 + + * Remove SvREFCNT_dec_NN until it can be implemented + properly. + (Thanks to bulk88 for reporting GH #10) + * Fix GH #11 - compiler warning under clang + (Thanks to jhi for reporting it) + * Fix GH #12 - compiler warnings + (Thanks to jhi for reporting it) + +3.23 - 2014-04-12 + + * Add support for HeUTF8 + * Add GetFileContents() to retrieve the contents of the + ppport.h file + * Update MAX_VER to be 5.20 + * Update issue tracker to GitHub + +3.22 - 2014-03-19 + + * Add support for the following API + SvREFCNT_dec_NN + mg_findext + sv_unmagicext + * Update META + Move bug tracker to github + Provide link to repository + * Avoid syntax disallowed by C++11 + (Thanks to Tony C for the patch) + +3.21 - 2013-08-17 + + * Fix cpan #87870: Merge core perl commit 90b0dc0e2e + (Thanks to Father Chrysostomos for the original patch and + to Steve Hay for forwarding it) + * Fix cpan #86975: Deterministically order API elements in POD + (Thanks to Karl Williamson for providing a patch.) + * Fix cpan #81796: my $_ is deprecated + (Thanks to Nicholas Clark for providing a patch) + * Fix cpan #81484: fix isASCII and isCNTRL for inputs > 255 + (Thanks to Karl Williamson for providing a patch) + * Fix cpan #80314: make use of PERL_NO_GET_CONTEXT the default + * Fix cpan #79814: Install to 'site' for perl 5.11+ + (Thanks to Robert Sedlacek for providing a patch) + * Fix cpan #78271: Need SvPV_nomg_nolen + * Adapt buildperl.pl for newer Perl releases + * Update masked_versions regex for 5.005 thread builds + * Some tweaks needed to support 5.003 on 64-bit platforms + +3.20 - 2011-09-10 + + * fix CPAN #56749: isASCII and isCNTRL macros are buggy + (thanks to Karl Williamson for providing a patch and patiently + waiting almost two years for me to integrate it) + * fix CPAN #70427: RealPPPort.xs:1587: error: lvalue required as unary ‘&’ operand + +3.19_03 - 2011-04-13 + + * keep up with latest core changes + +3.19_02 - 2010-03-07 + + * fix a warning emitted by the test suite with older perls + * added support for the following API + newSVpvs_share + get_cvn_flags + get_cvs + (thanks to Goro Fuji for providing a patch to + implement all of these, fixes CPAN #47174) + +3.19_01 - 2010-02-20 + + * fix CPAN #50763: mistaken use of $[ + (thanks to Zefram for spotting this) + * remove spurious PUSHMARK from Perl_ppaddr_t + (thanks to Gerard Goossen for providing a patch) + * improved support for newer compilers in buildperl.pl + (thanks to Philippe Bruhat (BooK) for providing a patch) + * added support for the following API + memEQs + memNEs + * lots of small toolchain updates + +3.19 - 2009-06-14 + + * updated base/todo files + +3.18_01 - 2009-06-12 + + * fix CPAN #44614: Please support XSBODY + * fix CPAN #44655: Please support SVfARG + * added support for the following API + gv_fetchpvn_flags + gv_fetchpvs + gv_stashpvs + GvSVn + HvNAME_get + HvNAMELEN_get + isGV_with_GP + newSV_type + PL_error_count + PL_in_my + PL_in_my_stash + SVfARG + XSPROTO + (thanks to Goro Fuji for providing a patch to + implement almost all of these, fixes CPAN #44087) + +3.18 - 2009-06-12 + + * remove MAN3PODS option from Makefile.PL, which is + no longer needed (thanks to Nicholas Clark for + providing a patch) + * adapt mktests.PL for new layout of ext modules in + the core + +3.17 - 2009-03-15 + + * rework PTR macros, fixing PTR2ul for 5.6.1 + (fixes CPAN #39802, thanks to CHOCOLATE for + reporting and providing a patch) + * added support for the following API + PTR2nat + (second part of fix for CPAN #39802) + +3.16 - 2009-01-23 + + * fix DEFSV_set() for threaded 5.005 perls + * add G_METHOD support to call_sv() + +3.15 - 2009-01-18 + + * added support for the following API + DEFSV_set + * fix --unstrip for development versions + +3.14_05 - 2008-10-31 + + * fix stupid bugs in pv_pretty tests (only the + tests were broken, ppport.h was find) + +3.14_04 - 2008-10-30 + + * added support for the following API + isALNUMC [depend] + isASCII + isBLANK + isCNTRL + isGRAPH + isPRINT + isPSXSPC + isPUNCT + isXDIGIT + PERL_PV_ESCAPE_ALL + PERL_PV_ESCAPE_FIRSTCHAR + PERL_PV_ESCAPE_NOBACKSLASH + PERL_PV_ESCAPE_NOCLEAR + PERL_PV_ESCAPE_QUOTE + PERL_PV_ESCAPE_RE + PERL_PV_ESCAPE_UNI + PERL_PV_ESCAPE_UNI_DETECT + PERL_PV_PRETTY_DUMP + PERL_PV_PRETTY_ELLIPSES + PERL_PV_PRETTY_LTGT + PERL_PV_PRETTY_NOCLEAR + PERL_PV_PRETTY_QUOTE + PERL_PV_PRETTY_REGPROP + pv_display + pv_escape + pv_pretty + +3.14_03 - 2008-10-21 + + * fix C++ compilation issue with last release + (spotted by Nicholas Clark) + * added support for the following API + Perl_ppaddr_t + Perl_check_t + CPERLscope + (fixes CPAN #40078) + +3.14_02 - 2008-10-12 + + * added support for the following API + my_sprintf + PL_linestr + PL_bufptr + PL_bufend + PL_lex_state + PL_lex_stuff + PL_tokenbuf + SvPV_renew + (fixes CPAN #39809 and CPAN #39808) + * add read/write support for + PL_expect + PL_copline + PL_rsfp + PL_rsfp_filters + (fixes CPAN #39802) + * sync my_snprintf implementation with bleadperl + +3.14_01 - 2008-07-11 + + * resolve CPAN #37451: add PERLIO_FUNCS_DECL and + PERLIO_FUNCS_CAST + * update API info + +3.14 - 2008-06-01 + + * fix CPAN #36197: filename nit in parse_partspec + (thanks to Craig A. Berry for providing a patch) + +3.13_03 - 2008-05-13 + + * fix CPAN #35835: SvPV_flags_const_nolen segfaults prior + to perl 5.8.8 + +3.13_02 - 2008-04-13 + + * fix NV[efg]f format string macros for perl-5.6.0 built + using -Duselongdouble (thanks to Zefram for figuring this + out and to Jarkko Hietaniemi for keeping me in sync) + * add --patch and --oneshot options to devel/buildperl.pl + +3.13_01 - 2008-01-04 + + * fix dependency detection algorithm for functions + * fix some potential memory leaks in the test suite + * no need to use *_mg functions for mX?PUSH macros + * added support for the following API + mPUSHs + mXPUSHs + newSVpvn_flags + newSVpvn_utf8 + newSVpvs_flags + SVf_UTF8 + * make sure soak works with cromfs + +3.13 - 2007-10-04 + + * fix cpan #29748: ppport.h problems with perl5.005_05 + (spotted by Slaven Rezić) + * fix a compiler warning + +3.12 - 2007-09-22 + + [released without changes] + +3.11_06 - 2007-09-11 + + * fix cpan #29302: Perl_croak_nocontext doesn't need aTHX_ + (spotted by Jerry D. Hedden) + * fix a Win32 VC++ compiler warning (thanks to Steve Hay for + providing a patch) + * don't generate redundant specs for provided Perl_ functions + * fun with const and casts to avoid compiler warnings + * bump max supported version to 5.10.0 + +3.11_05 - 2007-08-20 + + * fix: PERL_HASH() was emitting a warning when passed in a + const char pointer + * fix: sv_magic_portable() was emitting a warning when + passed in a const char pointer + * fix: make sure arguments to sv_magic_portable() are only + evaluated once + +3.11_04 - 2007-08-20 + + * fix: ignore strings and XS comments when scanning and + patching files + * added support for the following API + newSVpvn_share + PERL_HASH + SvSHARED_HASH + * use PERL_BCDREVISION for version checking to save some + bytes in ppport.h + * improve the --strip option + - strip all C comments + - strip most superfluous whitespace + with these changes, the stripped ppport.h is now almost + 30% smaller: + 3.11_03 3.11_04 delta + ------------------------------------------ + uncompressed 87988 62573 -28.9% + gzip'd 17985 12725 -29.2% + +3.11_03 - 2007-08-14 + + * fix an infinite recursion in ppport.h that could be + triggered by circular dependencies + * fix PERL_BCDREVISION, which wasn't BCD but simply + shifted decimal (just in time for 5.10) + * fix detection of macros that are not listed in the + implementation/dontwarn sections + +3.11_02 - 2007-08-13 + + * fix cpan #25372: special case sv_magic(sv, obj, how, name, 0) + * fix cpan #27906: [PATCH] add UTF8_MAXBYTES + (thanks to Steve Peters for providing a patch) + * added support for the following API + sv_2pv_flags + sv_2pvbyte_nolen + SV_CONST_RETURN + SV_COW_DROP_PV + SV_COW_SHARED_HASH_KEYS + SV_GMAGIC + SV_HAS_TRAILING_NUL + SV_IMMEDIATE_UNREF + sv_magic_portable + SV_MUTABLE_RETURN + SV_NOSTEAL + sv_pvn_force_flags + SV_SMAGIC + SV_UTF8_NO_ENCODING + SvPV_const + SvPV_flags + SvPV_flags_const + SvPV_flags_const_nolen + SvPV_flags_mutable + SvPV_force + SvPV_force_flags + SvPV_force_flags_mutable + SvPV_force_flags_nolen + SvPV_force_mutable + SvPV_force_nolen + SvPV_force_nomg_nolen + SvPV_mutable + SvPV_nolen_const + SvPV_nomg_const + SvPV_nomg_const_nolen + SvUOK + UTF8_MAXBYTES + * provide compatibility macros for vanished variables + PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters + * add warnings support to ppport.h + * update ppport.h file searching logic + * add -c.inc and -xs.inc to the list of supported extensions + * document that --copy doesn't include the dot + * improve soak script and devel/buildperl.pl + +3.11_01 - 2007-03-23 + + * added support for the following API + PL_expect + load_module + vload_module + (thanks to Nicholas Clark for providing a patch) + +3.11 - 2007-02-14 + + * happy new year! + +3.10_02 - 2006-12-02 + + * add two missing files + +3.10_01 - 2006-12-02 + + * fix cpan #21239: Signals safe in Perl 5.8.0 + * fix PL_ppaddr and PL_no_modify support 5.005 perls + * added dTHXR, aTHXR and aTHXR_ for API that need + the context argument in pre-5.6.0 perls + * added support for the following API + PL_DBsignal + PL_DBtrace + PL_laststatval + PL_statcache + * added tests for all PL_* variables + * added progress indicator to soak script + * added --test-archives option to buildperl.pl script + * added comments to all autogenerated files that + clearly indicate their purpose and origin + +3.10 - 2006-08-14 + + * remove timestamp from generated ppport.h + +3.09_02 - 2006-07-25 + + * added support for the following API + my_strlcat + my_strlcpy + (thanks to Steve Peters for providing a patch) + +3.09_01 - 2006-07-21 + + * avoid using 'glob' when running under miniperl + +3.09 - 2006-07-08 + + * fix Makefile.PL's c_o override + * update API info + * improve soak script + - now counts warnings emitted during testing + - output is colored (can be turned off) + * add a section on integrating this module into + the core to the HACKERS file + +3.08_07 - 2006-07-03 + + * fix cpan #20179: Licensing information for PPPort is + unclear + * only --unstrip a stripped ppport.h if an appropriate + version of Devel::PPPort is installed + * add a --version option to ppport.h + +3.08_06 - 2006-06-25 + + * fix breakage on MSWin32, where generating XS files on + the fly doesn't seem to work the same way as under Linux + (thanks to Sadahiro Tomoyuki for providing a patch) + * load the shared files only when testing the module + * remove PPPort.xs from CPAN distribution + +3.08_05 - 2006-06-23 + + * when in the core, generate PPPort.pm and PPPort.xs + automatically + * PPPort.pm can now be loaded by miniperl + +3.08_04 - 2006-05-29 + + * update API info + * fix a bug in the automated API info generator that + caused slightly wrong output + * improve the speed of the automated API info generator; + we're now down from several hours to a few minutes + +3.08_03 - 2006-05-25 + + * update API info + * add devel/regenerate script to regenerate API info + * improve and speed up the development tools + +3.08_02 - 2006-05-22 + + * fix a POD error + * added POD test + * changed hv_stores() to omit the hash parameter + * improve soak script + - can now search directories for perl executables + - can use only perl binaries of at least a certain + revision using the --min option + - sorts tests by perl version + - shows a summary of failed versions + * added support for the following API + PERL_USE_GCC_BRACE_GROUPS + PoisonFree + PoisonNew + PoisonWith + SvREFCNT_inc + SvREFCNT_inc_NN + SvREFCNT_inc_simple + SvREFCNT_inc_simple_NN + SvREFCNT_inc_simple_void + SvREFCNT_inc_simple_void_NN + SvREFCNT_inc_void + SvREFCNT_inc_void_NN + +3.08_01 - 2006-05-20 + + * update NOOP and dNOOP to include lint directives + * update API info (for 5.8.8 and 5.9.3) + * added support for the following API + ckWARN + dVAR + hv_fetchs + hv_stores + my_snprintf + newSVpvs + packWARN + PERL_ABS + PERL_UNUSED_ARG + PERL_UNUSED_CONTEXT + PERL_UNUSED_VAR + STR_WITH_LEN + sv_catpvs + sv_setpvs + SVf + SvVSTRING_mg + warner + +3.08 - 2006-01-19 + + * thanks to Craig Berry for fixing my broken ppphtest + * add AUTHOR and ABSTRACT_FROM to Makefile.PL + +3.07 - 2006-01-16 + + * improve internals documentation in HACKERS + * minor internal cleanups + * thanks to Steve Peters for adding support for + the following API + SvMAGIC_set + SvPVX_const + SvPVX_mutable + SvRV_set + SvSTASH_set + SvUV_set + +3.06_04 - 2005-10-30 + + * add --strip / --unstrip options + * added support for the following API + Newx + Newxc + Newxz + XSRETURN + +3.06_03 - 2005-10-18 + + * fix extra ')' in PPPort_pm.PL + * fix compiler warnings + * fix test for PL_signals + * fix API listing + * more tests + +3.06_02 - 2005-10-18 + + * improve devel/buildperl.pl utility + * added support for the following API + dAXMARK + PL_signals + PERL_SIGNALS_UNSAFE_FLAG + XSprePUSH + +3.06_01 - 2005-06-25 + + * fix --compat-version argument checking + * filter files passed on the command line by default + to make sure 'perl ppport.h *' does something useful + * add --nofilter option to override the filtering + * testsuite now hopefully supports MacOS Classic + * check definedness of PERL_UNUSED_DECL + * update API info + +3.06 - 2005-02-02 + + * fix cpan #11327: make fails with syntax error + * fix XCPT_* macros + +3.05 - 2005-01-31 + + * fix a test for SvPV_nolen + * add more examples to tht documentation + * improve wording baseline information + * added support for the following API + dXCPT + dXSTARG + XCPT_CATCH + XCPT_RETHROW + XCPT_TRY_END + XCPT_TRY_START + +3.04 - 2004-12-29 + + * fix a hint for sv_pvn_force + * fix VMS problem with unquoted command line arguments + not preserving case (perl change #23367) + * add --api-info switch for ppport.h + +3.03 - 2004-09-08 + + * MY_CXT_CLONE was broken + +3.02 - 2004-09-08 + + * added support for the following API: + END_EXTERN_C + EXTERN_C + MY_CXT_CLONE + PERL_GCC_BRACE_GROUPS_FORBIDDEN + START_EXTERN_C + STMT_END + STMT_START + +3.01 - 2004-08-23 + + * patchlevel.h tweak + +3.00_03 - 2004-08-20 + + * make sure the @INC path is kept up-to-date when changing + directories while running in the core test suite + +3.00_02 - 2004-08-19 + + * remove PPPort.pm and PPPort.xs dependencies from Makefile.PL, + as they can be rebuilt with a "make regen" when neccessary + +3.00_01 - 2004-08-17 + + * fixed problems with $^X in t/ppphtest.t when building in + the core on OpenBSD + * fixed a "duplicate dependencies" bug that could lead to + global NEED_'s where static NEED_'s are sufficient + * added support for the following API: + PL_DBsingle + PL_DBsub + PL_debstash + PL_diehook + PL_errgv + PL_no_modify + PL_perl_destruct_level + PL_ppaddr + PL_stack_sp + PL_sv_arenaroot + PL_tainted + PL_tainting + PUSHu + sv_catpvf_mg + sv_catpvf_mg_nocontext + sv_setpvf_mg + sv_setpvf_mg_nocontext + sv_vcatpvf + sv_vcatpvf_mg + sv_vsetpvf + sv_vsetpvf_mg + vnewSVpvf + XPUSHu + +3.00 - 2004-08-16 + + * added support for dAX and dITEMS, which got lost while + working on the 3.00 internals + +2.99_07 - 2004-08-13 + + * improve/check documentation + * add tests for CopFILE and CopSTASHPV + * add file headers + * some code cleanups + +2.99_06 - 2004-08-11 + + * --compat-version now considers all macros/functions + provided by Devel::PPPort, not only the documented API + * fixed: PL_rsfp was PL_rsfpv + * turn __PPPORT_NAME__ back to ppport.h, because the former + looks ugly on search.cpan.org + +2.99_05 - 2004-08-10 + + * --compat-version now also hides compatibility warnings for + unsupported API calls + +2.99_04 - 2004-08-10 + + * added code to check for correct INSTALLDIRS + * added --compat-version option to ppport.h script to only + check for compatibility with at least the given Perl version + * some small adjustments + +2.99_03 - 2004-08-09 + + * remove useless dependency from Makefile.PL (spotted by + Craig A. Berry) + * added checking for and replacement of C++ comments as + well as --cplusplus option to suppress it to ppport.h + script + * added more diagnostic output to ppport.h script + * added a hint for gv_stashpvn + * fixed the thread tests (spotted by Craig A. Berry) + * added more tests + * renamed and documented DPPP_NAMESPACE + * renamed some files + +2.99_02 - 2004-08-08 + + * second beta + * feature complete for 3.00 + * implemented missing functionality for ppport.h script: + - can now perform global (i.e. multi-file) NEED_ checks + - checks source for missing aTHX arguments + - checks source for unsupported API calls + - can now lists provided and unsupported API + - can use Text::Diff on platforms without diff utility + - can use custom diff utility / options + - can write one patch against the module + - can write single copies with changes applied + * updated the documentation for Devel::PPPort and ppport.h + * added lots of tests for the ppport.h script + * merged tests for call_* eval_* from XS::APItest + * added HACKERS file to document internals + * now includes PPPort.pm, so you can read the full docs + using search.cpan.org + +2.99_01 - 2004-08-07 + + * first beta towards 3.00 + * complete rework of internals + * autogenerated API-checks + * autogenerated .pm, .xs and .t files + * ppport.h changes: + - no static/global functions without explicit NEED_ + - can now be run without -x + - now shows hints and dependencies + - now has POD documentation, so perldoc ppport.h works + - now has options + - now uses File::Find when available + * tested with multi-threaded (ithreads and 5.005-threads) perls + from 5.005 and single-threaded perls from 5.003 up to 5.9.x + * added support for the following API: + CopFILE + CopFILEAV + CopFILEGV + CopFILEGV_set + CopFILE_set + CopFILESV + CopSTASH + CopSTASH_eq + CopSTASHPV + CopSTASHPV_set + CopSTASH_set + CopyD + dUNDERBAR + IN_PERL_COMPILETIME + IV_MAX + IV_MIN + IVTYPE + memEQ + memNE + MoveD + mPUSHi + mPUSHn + mPUSHp + mPUSHu + mXPUSHi + mXPUSHn + mXPUSHp + mXPUSHu + newCONSTSUB + newSVuv + PERL_INT_MAX + PERL_INT_MIN + PERL_LONG_MAX + PERL_LONG_MIN + PERL_QUAD_MAX + PERL_QUAD_MIN + PERL_SHORT_MAX + PERL_SHORT_MIN + PERL_UCHAR_MAX + PERL_UCHAR_MIN + PERL_UINT_MAX + PERL_UINT_MIN + PERL_ULONG_MAX + PERL_ULONG_MIN + PERL_UQUAD_MAX + PERL_UQUAD_MIN + PERL_USHORT_MAX + PERL_USHORT_MIN + PL_hexdigit + PL_rsfp + Poison + PUSHmortal + sv_2pvbyte + sv_2pvbyte_nolen + sv_2pv_nolen + sv_2uv + sv_catpv_mg + sv_catpvn_mg + sv_catpvn_nomg + sv_catsv_mg + sv_catsv_nomg + SvGETMAGIC + SvIV_nomg + SvPV_force_nomg + sv_pvn + sv_pvn_force + sv_pvn_nomg + SvPV_nomg + sv_setiv_mg + sv_setnv_mg + sv_setpv_mg + sv_setpvn_mg + sv_setsv_mg + sv_setsv_nomg + sv_setuv + sv_setuv_mg + sv_usepvn_mg + sv_uv + SvUV + SvUV_nomg + SvUVx + SvUVX + SvUVXx + UNDERBAR + UV_MAX + UV_MIN + UVTYPE + XPUSHmortal + XSRETURN_UV + XST_mUV + ZeroD + +2.008 - 20th October 2003 + + * eval_(pv|sv) added + * PERL_MAGIC_* added + +2.007 - 18th September 2003 + + * small fix in grok_numeric_radix: variable was used uninitialized + +2.006 - 8th September 2003 + + * call_(pv|sv|method|argv) added + * still compiler-warnings for grok_??? and 5.6.x, fixed + +2.005 - 2nd September 2003 + + * Some tweaks to grok_(hex|oct|bin) to make compiler warnings + go away for older perls + * grok_number and grok_numeric_radix added + +2.004 - 22th August 2003 + + * Added grok_(hex|oct|bin) and related constants + +2.003 - 8th May 2003 + + * Added get_av, get_cv, get_hv and get_sv + +2.002 - 2nd December 2001 + + * More portability issues in Makefile.PL addresed. + * Merged the Harness sub-module into Devel::PPPort + * More documentation in PPPort.pm + +2.001 + + * Some portability issues in Makefile.PL addresed. + +2.000 + + * Initial port to the perl core. + +1.007 + + * Original version of the module by Kenneth Albanowski. diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/HACKERS b/gnu/usr.bin/perl/dist/Devel-PPPort/HACKERS index 285a2e12411..8cd57a95d81 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/HACKERS +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/HACKERS @@ -239,8 +239,10 @@ span multiple lines, like in STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END -This usually makes the code more compact and readable. And you -only have to add C<__UNDEFINED__> to the C<=provided> section. +This usually makes the code more compact and readable. And you only have to add +the line C<__UNDEFINED__> to the C<=provides> section to get all macros +implemented this way to be imported into this section, so they all get +documented as being provided. Version checking can be tricky if you want to do it correct. You can use diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/MANIFEST.SKIP b/gnu/usr.bin/perl/dist/Devel-PPPort/MANIFEST.SKIP new file mode 100644 index 00000000000..05f98d45590 --- /dev/null +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/MANIFEST.SKIP @@ -0,0 +1,25 @@ +^\.git +^MYMETA.*$ +^Makefile$ +~$ +\.old(?:\..*)?$ +\.swp$ +\.o$ +\.bs$ +\.bak$ +\.orig$ +\.cache\.cm$ +\.DS_Store +^blib +^pm_to_blib +^backup +^parts/todo- +^parts/base- +^ppport\.h$ +^PPPort\.c$ +^PPPort.pm$ +^RealPPPort\. +^testing +Devel-PPPort.* +Devel-PPPort.*\.tar\.gz$ +.travis.yml diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/Makefile.PL b/gnu/usr.bin/perl/dist/Devel-PPPort/Makefile.PL index 117f9d107aa..62ba014cf66 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/Makefile.PL +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/Makefile.PL @@ -26,7 +26,7 @@ unless ($ENV{'PERL_CORE'}) { @ARGV = map { /^--with-(apicheck)$/ && ++$opt{$1} ? () : $_ } @ARGV; -WriteMakefile( +my %mf = ( NAME => 'Devel::PPPort', VERSION_FROM => 'PPPort_pm.PL', PM => { 'PPPort.pm' => '$(INST_LIBDIR)/PPPort.pm' }, @@ -34,26 +34,13 @@ WriteMakefile( OBJECT => 'RealPPPort$(OBJ_EXT) $(O_FILES)', XSPROTOARG => '-noprototypes', CONFIGURE => \&configure, - META_MERGE => { - 'meta-spec' => { - version => 2, - }, - resources => { - bugtracker => { - web => 'https://rt.perl.org/rt3/', - }, - repository => { - type => 'git', - url => 'git://perl5.git.perl.org/perl.git', - web => 'https://perl5.git.perl.org/perl.git', - }, - }, - }, ); +delete $mf{META_MERGE} unless eval { ExtUtils::MakeMaker->VERSION (6.46) }; +WriteMakefile(%mf); sub configure { - my @clean = qw{ $(H_FILES) RealPPPort.xs RealPPPort.c }; + my @clean = qw{ $(H_FILES) RealPPPort.xs RealPPPort.c PPPort.pm }; my %depend = ('$(OBJECT)' => '$(H_FILES)'); my @C_FILES = qw{ module2.c module3.c }, my %PL_FILES = ( @@ -65,9 +52,7 @@ sub configure if (eval $ExtUtils::MakeMaker::VERSION >= 6) { push @moreopts, AUTHOR => 'Marcus Holland-Moritz <mhx@cpan.org>'; - if (-f 'PPPort.pm') { - push @moreopts, ABSTRACT_FROM => 'PPPort.pm'; - } + push @moreopts, ABSTRACT_FROM => 'PPPort_pm.PL'; } if (eval $ExtUtils::MakeMaker::VERSION >= 6.30_01) { @@ -75,15 +60,11 @@ sub configure push @moreopts, LICENSE => 'perl'; } - if ($ENV{'PERL_CORE'}) { - # Pods will be built by installman. - push @clean, 'PPPort.pm'; - } - else { + if (not $ENV{'PERL_CORE'}) { # Devel::PPPort is in the core since 5.7.3 # 5.11.0+ has site before perl push @moreopts, INSTALLDIRS => ( - ($] >= 5.007003 and $] < 5.011) + ("$]" >= 5.007003 and "$]" < 5.011) ? 'perl' : 'site' ); @@ -96,12 +77,39 @@ sub configure $depend{'apicheck.i'} = 'ppport.h'; } + open my $fh, '<', 'PPPort_pm.PL' or die "cannot open PPPort_pm.PL for reading: $!"; + my $version; + while (my $line = <$fh>) { + ($version) = $line =~ /^\$VERSION = '([\d.]+)';$/ and last; + }; + die 'failed to extract $VERSION from PPPort_pm.PL' if not $version; + close $fh; + return { C => \@C_FILES, XS => { 'RealPPPort.xs' => 'RealPPPort.c' }, PL_FILES => \%PL_FILES, depend => \%depend, clean => { FILES => "@clean" }, + META_MERGE => { + 'meta-spec' => { version => 2 }, + provides => { + 'Devel::PPPort' => { + file => 'PPPort_pm.PL', + version => $version, + }, + }, + resources => { + bugtracker => { + web => 'https://rt.perl.org/rt3/', + }, + repository => { + type => 'git', + url => 'git://perl5.git.perl.org/perl.git', + web => 'https://perl5.git.perl.org/perl.git', + }, + }, + }, @moreopts, }; } @@ -133,6 +141,24 @@ POSTAMBLE return $post; } +sub MY::dist_core +{ + package MY; + my $dist = shift->SUPER::dist_core(@_); + + my $updated = ''; + my @rules = split( m{^\s*$}m, $dist ); + foreach my $rule ( @rules ) { + if ( $rule =~ m{^\s*^dist\s+:}m ) { + $rule .= qq[\t].q[$(NOECHO) $(ECHO) "Warning: Please check '__MAX_PERL__' value in PPPort_pm.PL"].qq[\n]; + } + $updated .= $rule; + } + + return $updated; +} + + sub MY::c_o { package MY; diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/PPPort_pm.PL b/gnu/usr.bin/perl/dist/Devel-PPPort/PPPort_pm.PL index 1a514f729d5..abce21de2ef 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/PPPort_pm.PL +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/PPPort_pm.PL @@ -5,6 +5,7 @@ ################################################################################ # # Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. +# Copyright (C) 2018, The perl5 porters # Version 2.x, Copyright (C) 2001, Paul Marquess. # Version 1.x, Copyright (C) 1999, Kenneth Albanowski. # @@ -120,7 +121,7 @@ $data =~ s{^__UNSUPPORTED_API__(\s*?)^} {join "\n", @todo}gem; $data =~ s{__MIN_PERL__}{5.003}g; -$data =~ s{__MAX_PERL__}{5.20}g; +$data =~ s{__MAX_PERL__}{5.30}g; open FH, ">PPPort.pm" or die "PPPort.pm: $!\n"; print FH $data; @@ -367,6 +368,7 @@ __DATA__ ################################################################################ # # Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. +# Copyright (C) 2018, The perl5 porters # Version 2.x, Copyright (C) 2001, Paul Marquess. # Version 1.x, Copyright (C) 1999, Kenneth Albanowski. # @@ -381,12 +383,20 @@ Devel::PPPort - Perl/Pollution/Portability =head1 SYNOPSIS - Devel::PPPort::WriteFile(); # defaults to ./ppport.h - Devel::PPPort::WriteFile('someheader.h'); + Devel::PPPort::WriteFile(); # defaults to ./ppport.h + Devel::PPPort::WriteFile('someheader.h'); - # Same as above but retrieve contents rather than write file - my $contents = Devel::PPPort::GetFileContents(); - my $contents = Devel::PPPort::GetFileContents('someheader.h'); + # Same as above but retrieve contents rather than write file + my $contents = Devel::PPPort::GetFileContents(); + my $contents = Devel::PPPort::GetFileContents('someheader.h'); + +=head1 Start using Devel::PPPort for XS projects + + $ cpan Devel::PPPort + $ perl -MDevel::PPPort -e'Devel::PPPort::WriteFile' + $ perl ppport.h --compat-version=5.6.1 --patch=diff.patch *.xs + $ patch -p0 < diff.patch + $ echo ppport.h >>MANIFEST =head1 DESCRIPTION @@ -521,6 +531,8 @@ Versions >= 3.22 are maintained with support from Matthew Horsfall (alh). Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. + Copyright (C) 2018, The perl5 porters + Version 2.x, Copyright (C) 2001, Paul Marquess. Version 1.x, Copyright (C) 1999, Kenneth Albanowski. @@ -539,7 +551,7 @@ package Devel::PPPort; use strict; use vars qw($VERSION $data); -$VERSION = '3.40'; +$VERSION = '3.52'; sub _init_data { @@ -616,15 +628,15 @@ __DATA__ %include limits -%include uv +%include misc -%include memory +%include warn -%include magic +%include uv -%include misc +%include memory -%include format +%include magic_defs %include mess @@ -640,6 +652,8 @@ __DATA__ %include MY_CXT +%include format + %include SvREFCNT %include newSV_type @@ -658,10 +672,10 @@ __DATA__ %include gv -%include warn - %include pvs +%include magic + %include cop %include grok diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/apidoc.fnc b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/apidoc.fnc index fe153541b2a..1149c06b271 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/apidoc.fnc +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/apidoc.fnc @@ -13,97 +13,139 @@ : source code, but are not contained in F<embed.fnc>. : -AmUx|Perl_keyword_plugin_t|PL_keyword_plugin -AmU|Perl_check_t *|PL_check -AmU|yy_parser *|PL_parser -AmU||G_ARRAY -AmU||G_DISCARD -AmU||G_EVAL -AmU||G_NOARGS -AmU||G_SCALAR -AmU||G_VOID -AmU||HEf_SVKEY -AmU||MARK -AmU||Nullav -AmU||Nullch -AmU||Nullcv -AmU||Nullhv -AmU||Nullsv -AmU||ORIGMARK -AmU||SP -AmU||SVt_INVLIST -AmU||SVt_IV -AmU||SVt_NULL -AmU||SVt_NV -AmU||SVt_PV -AmU||SVt_PVAV -AmU||SVt_PVCV -AmU||SVt_PVFM -AmU||SVt_PVGV -AmU||SVt_PVHV -AmU||SVt_PVIO -AmU||SVt_PVIV -AmU||SVt_PVLV -AmU||SVt_PVMG -AmU||SVt_PVNV -AmU||SVt_REGEXP -AmU||UNDERBAR -AmU||XCPT_CATCH -AmU||XCPT_TRY_END -AmU||XCPT_TRY_START -AmU||XS -AmU||XS_EXTERNAL -AmU||XS_INTERNAL -AmU||XS_VERSION -AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto -AmU||svtype -Ama|SV*|newSVpvs_flags|const char* s|U32 flags -Ama|SV*|newSVpvs_share|const char* s -Ama|SV*|newSVpvs|const char* s -Ama|char*|savepvs|const char* s -Ama|char*|savesharedpvs|const char* s -Amn|(whatever)|RETVAL -Amn|(whatever)|THIS +Ama|char*|savepvs|"literal string" s +Ama|char*|savesharedpvs|"literal string" s +Ama|SV*|newSVpvs_flags|"literal string" s|U32 flags +Ama|SV*|newSVpvs|"literal string" s +Ama|SV*|newSVpvs_share|"literal string" s +Am|AV*|GvAV|GV* gv +Am|bool|ckWARN2_d|U32 w1|U32 w2 +Am|bool|ckWARN2|U32 w1|U32 w2 +Am|bool|ckWARN3_d|U32 w1|U32 w2|U32 w3 +Am|bool|ckWARN3|U32 w1|U32 w2|U32 w3 +Am|bool|ckWARN4_d|U32 w1|U32 w2|U32 w3|U32 w4 +Am|bool|ckWARN4|U32 w1|U32 w2|U32 w3|U32 w4 +Am|bool|ckWARN_d|U32 w +Am|bool|ckWARN|U32 w +Am|bool|DO_UTF8|SV* sv +Am|bool|isALPHA|char ch +Am|bool|isALPHANUMERIC|char ch +Am|bool|isASCII|char ch +Am|bool|isBLANK|char ch +Am|bool|isCNTRL|char ch +Am|bool|isDIGIT|char ch +Am|bool|isGRAPH|char ch +Am|bool|isIDCONT|char ch +Am|bool|isIDFIRST|char ch +Am|bool|isLOWER|char ch +Am|bool|isOCTAL|char ch +Am|bool|isPRINT|char ch +Am|bool|isPSXSPC|char ch +Am|bool|isPUNCT|char ch +Am|bool|isSPACE|char ch +Am|bool|isUPPER|char ch +Am|bool|isWORDCHAR|char ch +Am|bool|isXDIGIT|char ch +Am|bool|memEQ|char* s1|char* s2|STRLEN len +Am|bool|memNE|char* s1|char* s2|STRLEN len +Am|bool|OpHAS_SIBLING|OP *o +Am|bool|OP_TYPE_IS|OP *o|Optype type +Am|bool|OP_TYPE_IS_OR_WAS|OP *o|Optype type +Am|bool|strEQ|char* s1|char* s2 +Am|bool|strGE|char* s1|char* s2 +Am|bool|strGT|char* s1|char* s2 +Am|bool|strLE|char* s1|char* s2 +Am|bool|strLT|char* s1|char* s2 +Am|bool|strNE|char* s1|char* s2 +Am|bool|strnEQ|char* s1|char* s2|STRLEN len +Am|bool|strnNE|char* s1|char* s2|STRLEN len +Am|bool|SvIOK_notUV|SV* sv +Am|bool|SvIOK_UV|SV* sv +Am|bool|SvIsCOW_shared_hash|SV* sv +Am|bool|SvRXOK|SV* sv +Am|bool|SvTAINTED|SV* sv +Am|bool|SvTRUE_nomg|SV* sv +Am|bool|SvTRUE|SV* sv +Am|bool|SvUOK|SV* sv +Am|bool|SvVOK|SV* sv +Am|bool|UTF8_IS_INVARIANT|char c +Am|bool|UTF8_IS_NONCHAR|const U8 *s|const U8 *e +Am|bool|UTF8_IS_SUPER|const U8 *s|const U8 *e +Am|bool|UTF8_IS_SURROGATE|const U8 *s|const U8 *e +Am|bool|UVCHR_IS_INVARIANT|UV cp +Am|char*|HePV|HE* he|STRLEN len +Am|char*|HvENAME|HV* stash +Am|char*|HvNAME|HV* stash +Am|char*|SvEND|SV* sv +Am|char *|SvGROW|SV* sv|STRLEN len +Am|char*|SvPVbyte_force|SV* sv|STRLEN len +Am|char*|SvPVbyte_nolen|SV* sv +Am|char*|SvPVbyte|SV* sv|STRLEN len +Am|char*|SvPVbytex_force|SV* sv|STRLEN len +Am|char*|SvPVbytex|SV* sv|STRLEN len +Am|char *|SvPVCLEAR|SV* sv +Am|char*|SvPV_force_nomg|SV* sv|STRLEN len +Am|char*|SvPV_force|SV* sv|STRLEN len +Am|char*|SvPV_nolen|SV* sv +Am|char*|SvPV_nomg_nolen|SV* sv +Am|char*|SvPV_nomg|SV* sv|STRLEN len +Am|char*|SvPV|SV* sv|STRLEN len +Am|char*|SvPVutf8_force|SV* sv|STRLEN len +Am|char*|SvPVutf8_nolen|SV* sv +Am|char*|SvPVutf8|SV* sv|STRLEN len +Am|char*|SvPVutf8x_force|SV* sv|STRLEN len +Am|char*|SvPVutf8x|SV* sv|STRLEN len +Am|char*|SvPVX|SV* sv +Am|char*|SvPVx|SV* sv|STRLEN len +Am|const char *|OP_DESC|OP *o +Am|const char *|OP_NAME|OP *o +Am|CV*|GvCV|GV* gv +Am|HV *|cop_hints_2hv|const COP *cop|U32 flags +Am|HV*|CvSTASH|CV* cv +Am|HV*|GvHV|GV* gv +Am|HV*|gv_stashpvs|"literal string" name|I32 create +Am|HV*|SvSTASH|SV* sv +Am|int|AvFILL|AV* av +Am|IV|SvIV_nomg|SV* sv +Am|IV|SvIV|SV* sv +Am|IV|SvIVx|SV* sv +Am|IV|SvIVX|SV* sv +Amn|char*|CLASS +Amn|char*|POPp +Amn|char*|POPpbytex +Amn|char*|POPpx Amn|HV*|PL_modglobal Amn|I32|ax Amn|I32|items Amn|I32|ix Amn|IV|POPi +Amn|long|POPl +Amn|long|POPul Amn|NV|POPn +Amn|peep_t|PL_peepp +Amn|peep_t|PL_rpeepp Amn|Perl_ophook_t|PL_opfreehook Amn|STRLEN|PL_na -Amn|SV*|POPs Amn|SV|PL_sv_no Amn|SV|PL_sv_undef Amn|SV|PL_sv_yes +Amn|SV|PL_sv_zero +Amn|SV*|POPs Amn|U32|GIMME Amn|U32|GIMME_V Amn|UV|POPu -Amn|char*|CLASS -Amn|char*|POPp -Amn|char*|POPpbytex -Amn|char*|POPpx -Amn|long|POPl -Amn|long|POPul -Amn|peep_t|PL_peepp -Amn|peep_t|PL_rpeepp Amn|void|DECLARATION_FOR_LC_NUMERIC_MANIPULATION -Ams||ENTER -Ams||FREETMPS -Ams||LEAVE -Ams||MULTICALL -Ams||POP_MULTICALL -Ams||PUSH_MULTICALL -Ams||PUTBACK -Ams||SAVETMPS -Ams||SPAGAIN -Ams||XCPT_RETHROW -Ams||XSRETURN_EMPTY -Ams||XSRETURN_NO -Ams||XSRETURN_UNDEF -Ams||XSRETURN_YES -Ams||XS_APIVERSION_BOOTCHECK -Ams||XS_VERSION_BOOTCHECK +Am|NV|SvNV_nomg|SV* sv +Am|NV|SvNV|SV* sv +Am|NV|SvNVx|SV* sv +Am|NV|SvNVX|SV* sv +Amn|(whatever)|RETVAL +Amn|(whatever)|THIS +Am|OP*|LINKLIST|OP *o +Am|OP*|OpSIBLING|OP *o +Am|PADOFFSET|pad_add_name_pvs|"literal string" name|U32 flags|HV *typestash|HV *ourstash +Am|PADOFFSET|pad_findmy_pvs|"literal string" name|U32 flags +Am|REGEXP *|SvRX|SV *sv Ams||dAX Ams||dAXMARK Ams||dITEMS @@ -115,102 +157,55 @@ Ams||dUNDERBAR Ams||dXCPT Ams||dXSARGS Ams||dXSI32 -AmxU|PAD *|PL_comppad -AmxU|PADNAMELIST *|PL_comppad_name -AmxU|SV **|PL_curpad -AmxU|SV *|PL_parser-E<gt>linestr -AmxU|char *|PL_parser-E<gt>bufend -AmxU|char *|PL_parser-E<gt>bufptr -AmxU|char *|PL_parser-E<gt>linestart -Amx|COPHH *|cophh_copy|COPHH *cophh -Amx|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags -Amx|COPHH *|cophh_delete_pvs|const COPHH *cophh|const char *key|U32 flags -Amx|COPHH *|cophh_delete_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags -Amx|COPHH *|cophh_delete_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags -Amx|COPHH *|cophh_new_empty -Amx|COPHH *|cophh_store_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|SV *value|U32 flags -Amx|COPHH *|cophh_store_pvs|const COPHH *cophh|const char *key|SV *value|U32 flags -Amx|COPHH *|cophh_store_pv|const COPHH *cophh|const char *key|U32 hash|SV *value|U32 flags -Amx|COPHH *|cophh_store_sv|const COPHH *cophh|SV *key|U32 hash|SV *value|U32 flags -Amx|HV *|cophh_2hv|const COPHH *cophh|U32 flags -Amx|PAD **|PadlistARRAY|PADLIST padlist -Amx|PADLIST *|CvPADLIST|CV *cv -Amx|PADNAME **|PadlistNAMESARRAY|PADLIST padlist -Amx|PADNAME **|PadnamelistARRAY|PADNAMELIST pnl -Amx|PADNAMELIST *|PadlistNAMES|PADLIST padlist -Amx|SSize_t|PadMAX|PAD pad -Amx|SSize_t|PadlistMAX|PADLIST padlist -Amx|SSize_t|PadlistNAMESMAX|PADLIST padlist -Amx|SSize_t|PadnameREFCNT|PADNAME pn -Amx|SSize_t|PadnamelistMAX|PADNAMELIST pnl -Amx|SSize_t|PadnamelistREFCNT|PADNAMELIST pnl -Amx|STRLEN|PadnameLEN|PADNAME pn -Amx|SV **|PadARRAY|PAD pad -Amx|SV *|PadnameSV|PADNAME pn -Amx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags -Amx|SV *|cophh_fetch_pvs|const COPHH *cophh|const char *key|U32 flags -Amx|SV *|cophh_fetch_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags -Amx|SV *|cophh_fetch_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags -Amx|SV*|newSVpadname|PADNAME *pn -Amx|U32|PadlistREFCNT|PADLIST padlist -Amx|bool|PadnameUTF8|PADNAME pn -Amx|char *|PadnamePV|PADNAME pn -Amx|void|BhkDISABLE|BHK *hk|which -Amx|void|BhkENABLE|BHK *hk|which -Amx|void|BhkENTRY_set|BHK *hk|which|void *ptr -Amx|void|PadnameREFCNT_dec|PADNAME pn -Amx|void|PadnamelistREFCNT_dec|PADNAMELIST pnl -Amx|void|cophh_free|COPHH *cophh -Amx|void|lex_stuff_pvs|const char *pv|U32 flags -Am|AV*|GvAV|GV* gv -Am|CV*|GvCV|GV* gv -Am|HV *|cop_hints_2hv|const COP *cop|U32 flags -Am|HV*|CvSTASH|CV* cv -Am|HV*|GvHV|GV* gv -Am|HV*|SvSTASH|SV* sv -Am|HV*|gv_stashpvs|const char* name|I32 create -Am|IV|SvIVX|SV* sv -Am|IV|SvIV_nomg|SV* sv -Am|IV|SvIVx|SV* sv -Am|IV|SvIV|SV* sv -Am|NV|SvNVX|SV* sv -Am|NV|SvNV_nomg|SV* sv -Am|NV|SvNVx|SV* sv -Am|NV|SvNV|SV* sv -Am|OP*|LINKLIST|OP *o -Am|OP*|OpSIBLING|OP *o -Am|PADOFFSET|pad_add_name_pvs|const char *name|U32 flags|HV *typestash|HV *ourstash -Am|PADOFFSET|pad_findmy_pvs|const char *name|U32 flags -Am|REGEXP *|SvRX|SV *sv +Ams||ENTER +Ams||ENTER_with_name(name) +Ams||FREETMPS +Ams||LEAVE +Ams||LEAVE_with_name(name) +Ams||MULTICALL +Ams||POP_MULTICALL +Ams||PUSH_MULTICALL +Ams||PUTBACK +Ams||SAVETMPS +Ams||SPAGAIN Am|STRLEN|HeKLEN|HE* he Am|STRLEN|HvENAMELEN|HV *stash Am|STRLEN|HvNAMELEN|HV *stash +Am|STRLEN|isUTF8_CHAR_flags|const U8 *s|const U8 *e| const U32 flags Am|STRLEN|SvCUR|SV* sv Am|STRLEN|SvLEN|SV* sv +Am|STRLEN|UTF8_SAFE_SKIP|char* s|char* e Am|STRLEN|UTF8SKIP|char* s Am|STRLEN|UVCHR_SKIP|UV cp -Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e Am|SV *|boolSV|bool b -Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags -Am|SV *|cop_hints_fetch_pvs|const COP *cop|const char *key|U32 flags Am|SV *|cop_hints_fetch_pv|const COP *cop|const char *key|U32 hash|U32 flags +Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags +Am|SV *|cop_hints_fetch_pvs|const COP *cop|"literal string" key|U32 flags Am|SV *|cop_hints_fetch_sv|const COP *cop|SV *key|U32 hash|U32 flags -Am|SV *|sv_setref_pvs|const char* s -Am|SV**|hv_fetchs|HV* tb|const char* key|I32 lval -Am|SV**|hv_stores|HV* tb|const char* key|NULLOK SV* val Am|SV*|GvSV|GV* gv Am|SV*|HeSVKEY_force|HE* he -Am|SV*|HeSVKEY_set|HE* he|SV* sv Am|SV*|HeSVKEY|HE* he +Am|SV*|HeSVKEY_set|HE* he|SV* sv Am|SV*|HeVAL|HE* he +Am|SV**|hv_fetchs|HV* tb|"literal string" key|I32 lval +Am|SV**|hv_stores|HV* tb|"literal string" key|SV* val +Am|SV*|newRV_inc|SV* sv +Am|SV*|newSVpvn_utf8|const char* s|STRLEN len|U32 utf8 Am|SV*|ST|int ix Am|SV*|SvREFCNT_inc_NN|SV* sv Am|SV*|SvREFCNT_inc_simple_NN|SV* sv Am|SV*|SvREFCNT_inc_simple|SV* sv Am|SV*|SvREFCNT_inc|SV* sv Am|SV*|SvRV|SV* sv -Am|SV*|newRV_inc|SV* sv -Am|SV*|newSVpvn_utf8|NULLOK const char* s|STRLEN len|U32 utf8 +Am|SV *|sv_setref_pvs|"literal string" s +Am|svtype|SvTYPE|SV* sv +Ams||XCPT_RETHROW +Ams||XS_APIVERSION_BOOTCHECK +Ams||XSRETURN_EMPTY +Ams||XSRETURN_NO +Ams||XSRETURN_UNDEF +Ams||XSRETURN_YES +Ams||XS_VERSION_BOOTCHECK Am|U32|HeHASH|HE* he Am|U32|HeUTF8|HE* he Am|U32|OP_CLASS|OP *o @@ -226,6 +221,9 @@ Am|U32|SvOK|SV* sv Am|U32|SvOOK|SV* sv Am|U32|SvPOKp|SV* sv Am|U32|SvPOK|SV* sv +Am|U32|SvREADONLY_off|SV* sv +Am|U32|SvREADONLY_on|SV* sv +Am|U32|SvREADONLY|SV* sv Am|U32|SvREFCNT|SV* sv Am|U32|SvROK|SV* sv Am|U32|SvUTF8|SV* sv @@ -237,127 +235,125 @@ Am|U8|toLOWER_LC|U8 ch Am|U8|toLOWER|U8 ch Am|U8|toTITLE|U8 ch Am|U8|toUPPER|U8 ch -Am|UV|SvUVX|SV* sv +AmU||G_ARRAY +AmU||G_DISCARD +AmU||G_EVAL +AmU||G_NOARGS +AmU||G_SCALAR +AmU||G_VOID +AmU||HEf_SVKEY +AmU||MARK +AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto +Am|unsigned char|HvENAMEUTF8|HV *stash +Am|unsigned char|HvNAMEUTF8|HV *stash +AmU||Nullav +AmU||Nullch +AmU||Nullcv +AmU||Nullhv +AmU||Nullsv +AmU||ORIGMARK +AmU|Perl_check_t *|PL_check +AmU|placeholder|BOM_UTF8 +AmU|placeholder|REPLACEMENT_CHARACTER_UTF8 +AmU||SP +AmU||SVt_INVLIST +AmU||SVt_IV +AmU||SVt_NULL +AmU||SVt_NV +AmU||SVt_PV +AmU||SVt_PVAV +AmU||SVt_PVCV +AmU||SVt_PVFM +AmU||SVt_PVGV +AmU||SVt_PVHV +AmU||SVt_PVIO +AmU||SVt_PVIV +AmU||SVt_PVLV +AmU||SVt_PVMG +AmU||SVt_PVNV +AmU||SVt_REGEXP +AmU||svtype +AmU||UNDERBAR Am|UV|SvUV_nomg|SV* sv -Am|UV|SvUVx|SV* sv Am|UV|SvUV|SV* sv +Am|UV|SvUVx|SV* sv +Am|UV|SvUVX|SV* sv +Am|UV|toFOLD_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp Am|UV|toFOLD_uvchr|UV cp|U8* s|STRLEN* lenp +Am|UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp Am|UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp +Am|UV|toTITLE_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp Am|UV|toTITLE_uvchr|UV cp|U8* s|STRLEN* lenp +Am|UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp Am|UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp -Am|bool|DO_UTF8|SV* sv -Am|bool|OP_TYPE_IS_OR_WAS|OP *o|Optype type -Am|bool|OP_TYPE_IS|OP *o|Optype type -Am|bool|OpHAS_SIBLING|OP *o -Am|bool|SvIOK_UV|SV* sv -Am|bool|SvIOK_notUV|SV* sv -Am|bool|SvIsCOW_shared_hash|SV* sv -Am|bool|SvRXOK|SV* sv -Am|bool|SvTAINTED|SV* sv -Am|bool|SvTRUE_nomg|SV* sv -Am|bool|SvTRUE|SV* sv -Am|bool|SvUOK|SV* sv -Am|bool|SvVOK|SV* sv -Am|bool|isALPHANUMERIC|char ch -Am|bool|isALPHA|char ch -Am|bool|isASCII|char ch -Am|bool|isBLANK|char ch -Am|bool|isCNTRL|char ch -Am|bool|isDIGIT|char ch -Am|bool|isGRAPH|char ch -Am|bool|isIDCONT|char ch -Am|bool|isIDFIRST|char ch -Am|bool|isLOWER|char ch -Am|bool|isOCTAL|char ch -Am|bool|isPRINT|char ch -Am|bool|isPSXSPC|char ch -Am|bool|isPUNCT|char ch -Am|bool|isSPACE|char ch -Am|bool|isUPPER|char ch -Am|bool|isWORDCHAR|char ch -Am|bool|isXDIGIT|char ch -Am|bool|memEQ|char* s1|char* s2|STRLEN len -Am|bool|memNE|char* s1|char* s2|STRLEN len -Am|bool|strEQ|char* s1|char* s2 -Am|bool|strGE|char* s1|char* s2 -Am|bool|strGT|char* s1|char* s2 -Am|bool|strLE|char* s1|char* s2 -Am|bool|strLT|char* s1|char* s2 -Am|bool|strNE|char* s1|char* s2 -Am|bool|strnEQ|char* s1|char* s2|STRLEN len -Am|bool|strnNE|char* s1|char* s2|STRLEN len -Am|char *|SvGROW|SV* sv|STRLEN len -Am|char*|HePV|HE* he|STRLEN len -Am|char*|HvENAME|HV* stash -Am|char*|HvNAME|HV* stash -Am|char*|SvEND|SV* sv -Am|char*|SvPVX|SV* sv -Am|char*|SvPV_force_nomg|SV* sv|STRLEN len -Am|char*|SvPV_force|SV* sv|STRLEN len -Am|char*|SvPV_nolen|SV* sv -Am|char*|SvPV_nomg_nolen|SV* sv -Am|char*|SvPV_nomg|SV* sv|STRLEN len -Am|char*|SvPVbyte_force|SV* sv|STRLEN len -Am|char*|SvPVbyte_nolen|SV* sv -Am|char*|SvPVbytex_force|SV* sv|STRLEN len -Am|char*|SvPVbytex|SV* sv|STRLEN len -Am|char*|SvPVbyte|SV* sv|STRLEN len -Am|char*|SvPVutf8_force|SV* sv|STRLEN len -Am|char*|SvPVutf8_nolen|SV* sv -Am|char*|SvPVutf8x_force|SV* sv|STRLEN len -Am|char*|SvPVutf8x|SV* sv|STRLEN len -Am|char*|SvPVutf8|SV* sv|STRLEN len -Am|char*|SvPVx|SV* sv|STRLEN len -Am|char*|SvPV|SV* sv|STRLEN len -Am|const char *|OP_DESC|OP *o -Am|const char *|OP_NAME|OP *o -Am|int|AvFILL|AV* av -Am|svtype|SvTYPE|SV* sv -Am|unsigned char|HvENAMEUTF8|HV *stash -Am|unsigned char|HvNAMEUTF8|HV *stash +AmU||XCPT_CATCH +AmU||XCPT_TRY_END +AmU||XCPT_TRY_START +AmUx|Perl_keyword_plugin_t|PL_keyword_plugin +AmU||XS +AmU||XS_EXTERNAL +AmU||XS_INTERNAL +AmU||XS_VERSION +AmU|yy_parser *|PL_parser Am|void *|CopyD|void* src|void* dest|int nitems|type -Am|void *|MoveD|void* src|void* dest|int nitems|type -Am|void *|ZeroD|void* dest|int nitems|type -Am|void*|HeKEY|HE* he Am|void|Copy|void* src|void* dest|int nitems|type Am|void|EXTEND|SP|SSize_t nitems +Am|void*|HeKEY|HE* he +Am|void *|MoveD|void* src|void* dest|int nitems|type Am|void|Move|void* src|void* dest|int nitems|type +Am|void|mPUSHi|IV iv +Am|void|mPUSHn|NV nv +Am|void|mPUSHp|char* str|STRLEN len +Am|void|mPUSHs|SV* sv +Am|void|mPUSHu|UV uv +Am|void|mXPUSHi|IV iv +Am|void|mXPUSHn|NV nv +Am|void|mXPUSHp|char* str|STRLEN len +Am|void|mXPUSHs|SV* sv +Am|void|mXPUSHu|UV uv Am|void|Newxc|void* ptr|int nitems|type|cast -Am|void|Newxz|void* ptr|int nitems|type Am|void|Newx|void* ptr|int nitems|type +Am|void|Newxz|void* ptr|int nitems|type Am|void|OpLASTSIB_set|OP *o|OP *parent Am|void|OpMAYBESIB_set|OP *o|OP *sib|OP *parent Am|void|OpMORESIB_set|OP *o|OP *sib Am|void|PERL_SYS_INIT3|int *argc|char*** argv|char*** env Am|void|PERL_SYS_INIT|int *argc|char*** argv Am|void|PERL_SYS_TERM| -Am|void|PUSHMARK|SP +Am|void|PoisonFree|void* dest|int nitems|type +Am|void|PoisonNew|void* dest|int nitems|type +Am|void|Poison|void* dest|int nitems|type +Am|void|PoisonWith|void* dest|int nitems|type|U8 byte Am|void|PUSHi|IV iv +Am|void|PUSHMARK|SP Am|void|PUSHmortal Am|void|PUSHn|NV nv Am|void|PUSHp|char* str|STRLEN len Am|void|PUSHs|SV* sv Am|void|PUSHu|UV uv -Am|void|PoisonFree|void* dest|int nitems|type -Am|void|PoisonNew|void* dest|int nitems|type -Am|void|PoisonWith|void* dest|int nitems|type|U8 byte -Am|void|Poison|void* dest|int nitems|type -Am|void|RESTORE_LC_NUMERIC Am|void|Renewc|void* ptr|int nitems|type|cast Am|void|Renew|void* ptr|int nitems|type +Am|void|RESTORE_LC_NUMERIC +Am|void|Safefree|void* ptr Am|void|STORE_LC_NUMERIC_FORCE_TO_UNDERLYING Am|void|STORE_LC_NUMERIC_SET_TO_NEEDED -Am|void|Safefree|void* ptr Am|void|StructCopy|type *src|type *dest|type +Am|void|sv_catpvn_nomg|SV* sv|const char* ptr|STRLEN len +Am|void|sv_catpv_nomg|SV* sv|const char* ptr +Am|void|sv_catpvs_flags|SV* sv|"literal string" s|I32 flags +Am|void|sv_catpvs_mg|SV* sv|"literal string" s +Am|void|sv_catpvs_nomg|SV* sv|"literal string" s +Am|void|sv_catpvs|SV* sv|"literal string" s +Am|void|sv_catsv_nomg|SV* dsv|SV* ssv Am|void|SvCUR_set|SV* sv|STRLEN len Am|void|SvGETMAGIC|SV* sv Am|void|SvIOK_off|SV* sv -Am|void|SvIOK_only_UV|SV* sv Am|void|SvIOK_only|SV* sv +Am|void|SvIOK_only_UV|SV* sv Am|void|SvIOK_on|SV* sv Am|void|SvIV_set|SV* sv|IV val Am|void|SvLEN_set|SV* sv|STRLEN len @@ -368,10 +364,10 @@ Am|void|SvNOK_off|SV* sv Am|void|SvNOK_only|SV* sv Am|void|SvNOK_on|SV* sv Am|void|SvNV_set|SV* sv|NV val -Am|void|SvOOK_offset|NN SV*sv|STRLEN len +Am|void|SvOOK_offset|SV*sv|STRLEN len Am|void|SvPOK_off|SV* sv -Am|void|SvPOK_only_UTF8|SV* sv Am|void|SvPOK_only|SV* sv +Am|void|SvPOK_only_UTF8|SV* sv Am|void|SvPOK_on|SV* sv Am|void|SvPV_set|SV* sv|char* val Am|void|SvREFCNT_dec_NN|SV* sv @@ -383,13 +379,16 @@ Am|void|SvREFCNT_inc_void|SV* sv Am|void|SvROK_off|SV* sv Am|void|SvROK_on|SV* sv Am|void|SvRV_set|SV* sv|SV* val -Am|void|SvSETMAGIC|SV* sv -Am|void|SvSHARE|SV* sv -Am|void|SvSTASH_set|SV* sv|HV* val Am|void|SvSetMagicSV_nosteal|SV* dsv|SV* ssv +Am|void|SvSETMAGIC|SV* sv Am|void|SvSetMagicSV|SV* dsv|SV* ssv +Am|void|sv_setpvs_mg|SV* sv|"literal string" s +Am|void|sv_setpvs|SV* sv|"literal string" s +Am|void|sv_setsv_nomg|SV* dsv|SV* ssv Am|void|SvSetSV_nosteal|SV* dsv|SV* ssv Am|void|SvSetSV|SV* dsv|SV* ssv +Am|void|SvSHARE|SV* sv +Am|void|SvSTASH_set|SV* sv|HV* val Am|void|SvTAINTED_off|SV* sv Am|void|SvTAINTED_on|SV* sv Am|void|SvTAINT|SV* sv @@ -398,88 +397,116 @@ Am|void|SvUPGRADE|SV* sv|svtype type Am|void|SvUTF8_off|SV *sv Am|void|SvUTF8_on|SV *sv Am|void|SvUV_set|SV* sv|UV val +Am|void|XopDISABLE|XOP *xop|which +Am|void|XopENABLE|XOP *xop|which +Am|void|XopENTRY_set|XOP *xop|which|value Am|void|XPUSHi|IV iv Am|void|XPUSHmortal Am|void|XPUSHn|NV nv Am|void|XPUSHp|char* str|STRLEN len Am|void|XPUSHs|SV* sv Am|void|XPUSHu|UV uv +Am|void|XSRETURN|int nitems Am|void|XSRETURN_IV|IV iv Am|void|XSRETURN_NV|NV nv Am|void|XSRETURN_PV|char* str Am|void|XSRETURN_UV|IV uv -Am|void|XSRETURN|int nitems Am|void|XST_mIV|int pos|IV iv Am|void|XST_mNO|int pos Am|void|XST_mNV|int pos|NV nv Am|void|XST_mPV|int pos|char* str Am|void|XST_mUNDEF|int pos Am|void|XST_mYES|int pos -Am|void|XopDISABLE|XOP *xop|which -Am|void|XopENABLE|XOP *xop|which -Am|void|XopENTRY_set|XOP *xop|which|value +Am|void *|ZeroD|void* dest|int nitems|type Am|void|Zero|void* dest|int nitems|type -Am|void|mPUSHi|IV iv -Am|void|mPUSHn|NV nv -Am|void|mPUSHp|char* str|STRLEN len -Am|void|mPUSHs|SV* sv -Am|void|mPUSHu|UV uv -Am|void|mXPUSHi|IV iv -Am|void|mXPUSHn|NV nv -Am|void|mXPUSHp|char* str|STRLEN len -Am|void|mXPUSHs|SV* sv -Am|void|mXPUSHu|UV uv -Am|void|sv_catpv_nomg|SV* sv|const char* ptr -Am|void|sv_catpvn_nomg|SV* sv|const char* ptr|STRLEN len -Am|void|sv_catpvs_flags|SV* sv|const char* s|I32 flags -Am|void|sv_catpvs_mg|SV* sv|const char* s -Am|void|sv_catpvs_nomg|SV* sv|const char* s -Am|void|sv_catpvs|SV* sv|const char* s -Am|void|sv_catsv_nomg|SV* dsv|SV* ssv -Am|void|sv_setpvs_mg|SV* sv|const char* s -Am|void|sv_setpvs|SV* sv|const char* s -Am|void|sv_setsv_nomg|SV* dsv|SV* ssv +Amx|bool|PadnameUTF8|PADNAME pn +Amx|char *|PadnamePV|PADNAME pn +Amx|COPHH *|cophh_copy|COPHH *cophh +Amx|COPHH *|cophh_delete_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags +Amx|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags +Amx|COPHH *|cophh_delete_pvs|const COPHH *cophh|"literal string" key|U32 flags +Amx|COPHH *|cophh_delete_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags +Amx|COPHH *|cophh_new_empty +Amx|COPHH *|cophh_store_pv|const COPHH *cophh|const char *key|U32 hash|SV *value|U32 flags +Amx|COPHH *|cophh_store_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|SV *value|U32 flags +Amx|COPHH *|cophh_store_pvs|const COPHH *cophh|"literal string" key|SV *value|U32 flags +Amx|COPHH *|cophh_store_sv|const COPHH *cophh|SV *key|U32 hash|SV *value|U32 flags +Amx|HV *|cophh_2hv|const COPHH *cophh|U32 flags Am||XopENTRYCUSTOM|const OP *o|which Am||XopENTRY|XOP *xop|which -mU||LVRET +Amx|PADLIST *|CvPADLIST|CV *cv +Amx|PADNAMELIST *|PadlistNAMES|PADLIST padlist +Amx|PADNAME **|PadlistNAMESARRAY|PADLIST padlist +Amx|PADNAME **|PadnamelistARRAY|PADNAMELIST pnl +Amx|PAD **|PadlistARRAY|PADLIST padlist +Amx|SSize_t|PadlistMAX|PADLIST padlist +Amx|SSize_t|PadlistNAMESMAX|PADLIST padlist +Amx|SSize_t|PadMAX|PAD pad +Amx|SSize_t|PadnamelistMAX|PADNAMELIST pnl +Amx|SSize_t|PadnamelistREFCNT|PADNAMELIST pnl +Amx|SSize_t|PadnameREFCNT|PADNAME pn +Amx|STRLEN|PadnameLEN|PADNAME pn +Amx|SV *|cophh_fetch_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags +Amx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags +Amx|SV *|cophh_fetch_pvs|const COPHH *cophh|"literal string" key|U32 flags +Amx|SV *|cophh_fetch_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags +Amx|SV*|newSVpadname|PADNAME *pn +Amx|SV **|PadARRAY|PAD pad +Amx|SV *|PadnameSV|PADNAME pn +Amx|U32|PadlistREFCNT|PADLIST padlist +AmxU|char *|PL_parser-E<gt>bufend +AmxU|char *|PL_parser-E<gt>bufptr +AmxU|char *|PL_parser-E<gt>linestart +AmxU|PADNAMELIST *|PL_comppad_name +AmxU|PAD *|PL_comppad +AmxU|SV **|PL_curpad +AmxU|SV *|PL_parser-E<gt>linestr +Amx|void|BhkDISABLE|BHK *hk|which +Amx|void|BhkENABLE|BHK *hk|which +Amx|void|BhkENTRY_set|BHK *hk|which|void *ptr +Amx|void|cophh_free|COPHH *cophh +Amx|void|lex_stuff_pvs|"literal string" pv|U32 flags +Amx|void|PadnamelistREFCNT_dec|PADNAMELIST pnl +Amx|void|PadnameREFCNT_dec|PADNAME pn +m|bool|CvWEAKOUTSIDE|CV *cv +m|bool|PadnameIsOUR|PADNAME pn +m|bool|PadnameIsSTATE|PADNAME pn +m|bool|PadnameOUTER|PADNAME pn +m|char *|PAD_COMPNAME_PV|PADOFFSET po +m|HV *|PAD_COMPNAME_OURSTASH|PADOFFSET po +m|HV *|PAD_COMPNAME_TYPE|PADOFFSET po +m|HV *|PadnameOURSTASH +m|HV *|PadnameTYPE|PADNAME pn mn|GV *|PL_DBsub mn|GV*|PL_last_in_gv mn|GV*|PL_ofsgv mn|SV *|PL_DBsingle mn|SV *|PL_DBtrace mn|SV*|PL_rs -mn|bool|PL_dowarn +mn|U8|PL_dowarn ms||djSP -mx|U32|BhkFLAGS|BHK *hk -mx|void *|BhkENTRY|BHK *hk|which -mx|void|CALL_BLOCK_HOOKS|which|arg -m|HV *|PAD_COMPNAME_OURSTASH|PADOFFSET po -m|HV *|PAD_COMPNAME_TYPE|PADOFFSET po -m|HV *|PadnameOURSTASH -m|HV *|PadnameTYPE|PADNAME pn -m|STRLEN|PAD_COMPNAME_GEN_set|PADOFFSET po|int gen m|STRLEN|PAD_COMPNAME_GEN|PADOFFSET po +m|STRLEN|PAD_COMPNAME_GEN_set|PADOFFSET po|int gen +m|struct refcounted_he *|refcounted_he_new_pvs|struct refcounted_he *parent|"literal string" key|SV *value|U32 flags m|SV *|CX_CURPAD_SV|struct context|PADOFFSET po m|SV *|PAD_BASE_SV |PADLIST padlist|PADOFFSET po m|SV *|PAD_SETSV |PADOFFSET po|SV* sv -m|SV *|PAD_SV |PADOFFSET po m|SV *|PAD_SVl |PADOFFSET po -m|SV *|refcounted_he_fetch_pvs|const struct refcounted_he *chain|const char *key|U32 flags +m|SV *|PAD_SV |PADOFFSET po +m|SV *|refcounted_he_fetch_pvs|const struct refcounted_he *chain|"literal string" key|U32 flags m|U32|PAD_COMPNAME_FLAGS|PADOFFSET po m|U32|SvTHINKFIRST|SV *sv -m|bool|CvWEAKOUTSIDE|CV *cv -m|bool|PadnameIsOUR|PADNAME pn -m|bool|PadnameIsSTATE|PADNAME pn -m|bool|PadnameOUTER|PADNAME pn -m|char *|PAD_COMPNAME_PV|PADOFFSET po -m|struct refcounted_he *|refcounted_he_new_pvs|struct refcounted_he *parent|const char *key|SV *value|U32 flags +mU||LVRET m|void|CX_CURPAD_SAVE|struct context m|void|PAD_CLONE_VARS|PerlInterpreter *proto_perl|CLONE_PARAMS* param m|void|PAD_RESTORE_LOCAL|PAD *opad m|void|PAD_SAVE_LOCAL|PAD *opad|PAD *npad m|void|PAD_SAVE_SETNULLPAD -m|void|PAD_SET_CUR |PADLIST padlist|I32 n m|void|PAD_SET_CUR_NOSAVE |PADLIST padlist|I32 n +m|void|PAD_SET_CUR |PADLIST padlist|I32 n m|void|SAVECLEARSV |SV **svp m|void|SAVECOMPPAD m|void|SAVEPADSV |PADOFFSET po +mx|U32|BhkFLAGS|BHK *hk +mx|void *|BhkENTRY|BHK *hk|which +mx|void|CALL_BLOCK_HOOKS|which|arg diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5005000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5005000 index 070a690e903..d3ba84c5304 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5005000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5005000 @@ -9,7 +9,6 @@ fbm_instr # E (Perl_fbm_instr) get_op_descs # E get_op_names # E init_stacks # E -mg_length # E mg_size # E newHVhv # E new_stackinfo # E diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006000 index 6cf8275d7e2..34b750a8639 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006000 @@ -67,54 +67,11 @@ get_hv # E (perl_get_hv) get_ppaddr # E get_sv # E (perl_get_sv) gv_dump # E -init_i18nl10n # E (perl_init_i18nl10n) -init_i18nl14n # E (perl_init_i18nl14n) isASCII # U isCNTRL # U isGRAPH # U isPUNCT # U isXDIGIT # U -is_uni_alnum # E -is_uni_alnum_lc # E -is_uni_alpha # E -is_uni_alpha_lc # E -is_uni_ascii # E -is_uni_ascii_lc # E -is_uni_cntrl # E -is_uni_cntrl_lc # E -is_uni_digit # E -is_uni_digit_lc # E -is_uni_graph # E -is_uni_graph_lc # E -is_uni_idfirst # E -is_uni_idfirst_lc # E -is_uni_lower # E -is_uni_lower_lc # E -is_uni_print # E -is_uni_print_lc # E -is_uni_punct # E -is_uni_punct_lc # E -is_uni_space # E -is_uni_space_lc # E -is_uni_upper # E -is_uni_upper_lc # E -is_uni_xdigit # E -is_uni_xdigit_lc # E -is_utf8_alnum # E -is_utf8_alpha # E -is_utf8_ascii # E -is_utf8_char # U -is_utf8_cntrl # E -is_utf8_digit # E -is_utf8_graph # E -is_utf8_idfirst # E -is_utf8_lower # E -is_utf8_mark # E -is_utf8_print # E -is_utf8_punct # E -is_utf8_space # E -is_utf8_upper # E -is_utf8_xdigit # E load_module # E magic_dump # E mess # E (Perl_mess) @@ -127,9 +84,6 @@ newSVpvf # E (Perl_newSVpvf) newSVuv # E newXS # E (Perl_newXS) newXSproto # E -new_collate # E (perl_new_collate) -new_ctype # E (perl_new_ctype) -new_numeric # E (perl_new_numeric) op_dump # E perl_parse # E (perl_parse) pmop_dump # E @@ -180,17 +134,11 @@ sv_setnv_mg # E (Perl_sv_setnv_mg) sv_setpvf # E (Perl_sv_setpvf) sv_setpvf_mg # E (Perl_sv_setpvf_mg) sv_setref_nv # E (Perl_sv_setref_nv) -sv_utf8_decode # E -sv_utf8_downgrade # E sv_utf8_encode # E sv_vcatpvf # E sv_vcatpvf_mg # E sv_vsetpvf # E sv_vsetpvf_mg # E -swash_init # E -to_uni_lower_lc # E -to_uni_title_lc # E -to_uni_upper_lc # E utf8_distance # E utf8_hop # U vcroak # E diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006001 index b3626c0b55f..7eab86a55bd 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5006001 @@ -1,7 +1,5 @@ 5.006001 SvGAMAGIC # U -apply_attrs_string # U -bytes_to_utf8 # U gv_efullname4 # U gv_fullname4 # U isBLANK # U @@ -10,7 +8,6 @@ is_utf8_string # U save_generic_pvref # U utf16_to_utf8 # E (Perl_utf16_to_utf8) utf16_to_utf8_reversed # E (Perl_utf16_to_utf8_reversed) -utf8_to_bytes # U G_METHOD # added by devel/scanprov NVef # added by devel/scanprov NVff # added by devel/scanprov diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007001 index 3de815ec8dd..716a9099b79 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007001 @@ -1,9 +1,6 @@ 5.007001 -ASCII_TO_NEED # U -NATIVE_TO_NEED # U POPpbytex # E SvUOK # U -bytes_from_utf8 # U despatch_signals # U do_openn # U gv_handler # U @@ -17,8 +14,6 @@ sv_setref_uv # U sv_unref_flags # U sv_utf8_upgrade # E (Perl_sv_utf8_upgrade) utf8_length # U -utf8_to_uvchr # U -utf8_to_uvuni # U utf8n_to_uvchr # U utf8n_to_uvuni # U uvchr_to_utf8 # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007002 index 393fcf1f6b9..40792a32c05 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007002 @@ -25,7 +25,6 @@ sv_setsv_flags # U sv_setsv_nomg # U sv_utf8_upgrade_flags # U sv_utf8_upgrade_nomg # U -swash_fetch # E (Perl_swash_fetch) GROK_NUMERIC_RADIX # added by devel/scanprov IN_LOCALE # added by devel/scanprov IN_LOCALE_COMPILETIME # added by devel/scanprov diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007003 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007003 index 127a118dae0..fc0a15d3496 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007003 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5007003 @@ -53,11 +53,6 @@ sv_nosharing # U sv_pvn_nomg # U sv_recode_to_utf8 # U sv_uni_display # U -to_uni_fold # U -to_uni_lower # E (Perl_to_uni_lower) -to_uni_title # E (Perl_to_uni_title) -to_uni_upper # E (Perl_to_uni_upper) -to_utf8_case # U unpack_str # U uvchr_to_utf8_flags # U uvuni_to_utf8_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008000 index 8af2dfae4d2..e5a6dfc6161 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008000 @@ -1,8 +1,5 @@ 5.008000 Poison # E -hv_iternext_flags # U -hv_store_flags # U -is_utf8_idcont # U nothreadhook # U WARN_LAYER # added by devel/scanprov WARN_THREADS # added by devel/scanprov diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008001 index 93df2b486e8..97039b5aa85 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5008001 @@ -9,7 +9,6 @@ is_utf8_string_loc # U packlist # U pad_add_anon # U pad_new # E -pad_tidy # E save_bool # U savestack_grow_cnt # U seed # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009002 index 65d7de90726..86fee4d7351 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009002 @@ -12,7 +12,6 @@ XPUSHmortal # E ZeroD # E dUNDERBAR # E dXCPT # E -find_rundefsvoffset # U gv_fetchpvn_flags # U gv_fetchsv # U mPUSHi # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009004 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009004 index 5a2f6b8ba7d..03e22e5c0f2 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009004 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009004 @@ -17,10 +17,8 @@ my_snprintf # U my_strlcat # U my_strlcpy # U my_vsnprintf # U -newXS_flags # U pv_escape # U pv_pretty # U -regclass_swash # E (Perl_regclass_swash) sv_does # U sv_setpvs # U sv_usepvn_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009005 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009005 index 8ddae03de6f..0959f923cf4 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009005 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5009005 @@ -1,19 +1,14 @@ 5.009005 PL_parser # E -Perl_signbit # U SvRX # U SvRXOK # U -av_create_and_push # U -av_create_and_unshift_one # U get_cvn_flags # U gv_fetchfile_flags # U -lex_start # E (Perl_lex_start) mro_get_linear_isa # U mro_method_changed_in # U my_dirfd # U newSV_type # U pregcomp # E (Perl_pregcomp) -ptr_table_clear # U ptr_table_fetch # U ptr_table_free # U ptr_table_new # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011001 index f42409363b7..28a8d5b15ae 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011001 @@ -1,6 +1,3 @@ 5.011001 ck_warner # U ck_warner_d # U -is_utf8_perl_space # U -is_utf8_perl_word # U -is_utf8_posix_digit # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011002 index df12d99fd62..910a552fe4f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5011002 @@ -1,13 +1,2 @@ 5.011002 PL_keyword_plugin # E -lex_bufutf8 # U -lex_discard_to # U -lex_grow_linestr # U -lex_next_chunk # U -lex_peek_unichar # U -lex_read_space # U -lex_read_to # U -lex_read_unichar # U -lex_stuff_pvn # U -lex_stuff_sv # U -lex_unstuff # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013005 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013005 index 88c7c7b80b4..825d1ad12fc 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013005 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013005 @@ -3,4 +3,3 @@ PL_rpeepp # E caller_cx # U isOCTAL # U lex_stuff_pvs # U -parse_fullstmt # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013006 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013006 index d145f368393..596c1ade2dc 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013006 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013006 @@ -7,7 +7,6 @@ ck_entersub_args_proto_or_list # U cv_get_call_checker # E cv_set_call_checker # E isWORDCHAR # U -lex_stuff_pv # U mg_free_type # U newSVpv_share # U op_append_elem # U @@ -15,7 +14,6 @@ op_append_list # U op_contextualize # U op_linklist # U op_prepend_elem # U -parse_stmtseq # U rv2cv_op_cv # U savesharedpvs # U savesharedsvpv # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013007 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013007 index 79a9a5f44a1..795fd1c0760 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013007 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013007 @@ -29,8 +29,3 @@ custom_op_register # E custom_op_xop # E newFOROP # A newWHILEOP # A -op_lvalue # U -op_scope # U -parse_barestmt # U -parse_block # U -parse_label # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013008 index 5c315d671ba..e4c882b8d8b 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013008 @@ -1,8 +1,4 @@ 5.013008 foldEQ_latin1 # U mg_findext # U -parse_arithexpr # U -parse_fullexpr # U -parse_listexpr # U -parse_termexpr # U sv_unmagicext # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013010 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013010 index d7f4365bfb1..467ea464b50 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013010 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5013010 @@ -1,4 +1 @@ 5.013010 -foldEQ_utf8_flags # U -is_utf8_xidcont # U -is_utf8_xidfirst # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5014000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5014000 index 3f837ef4d0d..cfe78226fea 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5014000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5014000 @@ -1,2 +1 @@ 5.014000 -_to_uni_fold_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015001 index 144926b1244..c886418516e 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015001 @@ -1,6 +1,4 @@ 5.015001 -cop_fetch_label # U -cop_store_label # U pad_add_name_pv # U pad_add_name_pvn # U pad_add_name_pvs # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015004 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015004 index 516327e6505..d6801037c58 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015004 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015004 @@ -12,9 +12,6 @@ gv_fetchmeth_pvn # U gv_fetchmeth_pvn_autoload # U gv_fetchmeth_sv # U gv_fetchmeth_sv_autoload # U -gv_fetchmethod_pv_flags # U -gv_fetchmethod_pvn_flags # U -gv_fetchmethod_sv_flags # U gv_init_pv # U gv_init_pvn # U gv_init_sv # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015009 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015009 index 30537f0445e..12e4d6de751 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015009 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5015009 @@ -1,5 +1,2 @@ 5.015009 utf8_to_uvchr_buf # U -utf8_to_uvuni_buf # U -valid_utf8_to_uvchr # U -valid_utf8_to_uvuni # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017002 index fd825e14bcd..e8638dce32f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017002 @@ -1,7 +1,4 @@ 5.017002 -is_uni_blank # U -is_uni_blank_lc # U -is_utf8_blank # U sv_copypv_flags # U sv_copypv_nomg # U sv_vcatpvfn_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017007 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017007 index c95c23505f2..6d97dffafdd 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017007 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017007 @@ -1,7 +1,2 @@ 5.017007 SvREFCNT_dec_NN # U -_is_uni_perl_idstart # U -_is_utf8_perl_idstart # U -is_uni_alnumc # U -is_uni_alnumc_lc # U -is_utf8_alnumc # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017008 index 9228a1506d0..de67457e79e 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5017008 @@ -1,8 +1,3 @@ 5.017008 -_is_uni_FOO # U -_is_uni_perl_idcont # U -_is_utf8_FOO # U -_is_utf8_mark # U -_is_utf8_perl_idcont # U isALPHANUMERIC # U isIDCONT # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019004 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019004 index 1aa2023c9f7..a24caa7e92b 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019004 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019004 @@ -1,4 +1,3 @@ 5.019004 -append_utf8_from_native_byte # U is_safe_syscall # U uvoffuni_to_utf8_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019009 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019009 index 7706f723a00..d6ccc505670 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019009 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5019009 @@ -1,5 +1 @@ 5.019009 -_to_utf8_fold_flags # A -_to_utf8_lower_flags # A -_to_utf8_title_flags # A -_to_utf8_upper_flags # A diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021001 index 353fedabfc5..89e38496d09 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021001 @@ -1,13 +1,4 @@ 5.021001 -_is_in_locale_category # U -_is_utf8_char_slow # U -_is_utf8_idcont # U -_is_utf8_idstart # U -_is_utf8_xidcont # U -_is_utf8_xidstart # U -isALNUM_lazy # U -isIDFIRST_lazy # U isUTF8_CHAR # U markstack_grow # E (Perl_markstack_grow) -my_strerror # U PERL_UNUSED_RESULT # added by devel/scanprov diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021007 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021007 index bcaa19ca5ff..43aef21250b 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021007 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021007 @@ -3,9 +3,4 @@ OpHAS_SIBLING # U OpSIBLING # U PadnameUTF8 # E is_invariant_string # U -newPADNAMELIST # U -newPADNAMEouter # U -newPADNAMEpvn # U newUNOP_AUX # E -padnamelist_fetch # U -padnamelist_store # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021008 index ccba00cb34d..06633eebc67 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5021008 @@ -1,2 +1 @@ 5.021008 -sv_get_backrefs # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5023008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5023008 index ed2ef6d2eb0..91f61649612 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5023008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/base/5023008 @@ -1,22 +1,2 @@ 5.023008 clear_defarray # U -cx_popblock # U -cx_popeval # U -cx_popformat # U -cx_popgiven # U -cx_poploop # U -cx_popsub # U -cx_popsub_args # U -cx_popsub_common # U -cx_popwhen # U -cx_pushblock # U -cx_pusheval # U -cx_pushformat # U -cx_pushgiven # U -cx_pushloop_for # U -cx_pushloop_plain # U -cx_pushsub # U -cx_pushwhen # U -cx_topblock # U -leave_adjust_stacks # U -savetmps # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/embed.fnc b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/embed.fnc index 1f347c2b834..40c8069d619 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/embed.fnc +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/embed.fnc @@ -1,6 +1,11 @@ : BEGIN{die "You meant to run regen/embed.pl"} # Stop early if fed to perl. : : This file is processed by regen/embed.pl and autodoc.pl +: It is used to declare the interfaces to the functions defined by perl. All +: non-static functions must have entries here. Static functions need not, but +: there is benefit to declaring them here, as it generally handles the thread +: context parameter invisibly, as well as making sure a PERL_ARGS_ASSERT_foo +: macro is defined, which can save you debugging time. : : Lines are of the form: : flags|return_type|function_name|arg1|arg2|...|argN @@ -8,6 +13,11 @@ : A line may be continued on another by ending it with a backslash. : Leading and trailing whitespace will be ignored in each component. : +: The default without flags is to declare a function for internal perl-core use +: only, not visible to XS code nor to Perl extensions. Use the A and E flags to +: modify this. Most non-static functions should have the 'p' flag to avoid +: namespace clashes with programs that embed perl. +: : flags are single letters with following meanings: : : A Available fully everywhere (usually part of the public API): @@ -23,21 +33,40 @@ : If the function is only exported for use in a public : macro, see X. : -: a Allocates memory a la malloc/calloc. Also implies "R": +: a Allocates memory a la malloc/calloc. Also implies "R". +: This should only be on functions which returns 'empty' memory +: which has no other pointers to it, and which does not contain +: any pointers to other things. So for example realloc() can't be +: 'a'. : : proto.h: add __attribute__malloc__ : -: b Binary backward compatibility; has an exported Perl_ implementation -: but function is also normally a macro (i.e. has the "m" flag as well). -: Backcompat functions ("b") can be anywhere, but if they are also -: macros ("m") then they have no proto.h entries so must either be in -: mathoms.c to get marked EXTERN_C (and skipped for -DNO_MATHOMS builds) -: or else will require special attention to ensure they are marked -: EXTERN_C (and then won't be automatically skipped for -DNO_MATHOMS -: builds). +: b Binary backward compatibility. This is used for functions which are +: kept only to not have to change legacy applications that call them. If +: there are no such legacy applications in a Perl installation for all +: functions flagged with this, the installation can run Configure with the +: -Accflags='-DNO_MATHOMS' parameter to not even compile them. If there +: is a macro form of this function that provides equivalent functionality +: (using a different implementation), also specify the 'm' flag. The 'b' +: functions are normally moved to mathoms.c, but if circumstances dictate +: otherwise, they can be anywhere, provided the whole function is wrapped +: with +: #ifndef NO_MATHOMS +: ... +: #endif +: +: Note that this flag no longer automatically adds a 'Perl_' prefix to the +: name. Additionally specify 'p' to do that. +: +: For functions, like wrappers, whose macro shortcut doesn't call the +: function, but which, for whatever reason, aren't considered legacy-only, +: use the 'o' flag : +: This flag effectively causes nothing to happen if the perl interpreter +: is compiled with -DNO_MATHOMS; otherwise these happen: : add entry to the list of exported symbols; -: don't define PERL_ARGS_ASSERT_FOO +: create PERL_ARGS_ASSERT_foo; +: add embed.h entry (unless overridden by the 'm' flag) : : D Function is deprecated: : @@ -56,7 +85,7 @@ : 1) must be static to its containing file ("i" or "s" flag); or : 2) be combined with the "X" flag. : -: f Function takes a format string. If the function name /strftime/ +: f Function takes a format string. If the function name =~ qr/strftime/ : then its assumed to take a strftime-style format string as 1st arg; : otherwise it's assumed to be a printf style format string, varargs : (hence any entry that would otherwise go in embed.h is suppressed): @@ -65,9 +94,10 @@ : : i Static inline: function in source code has a S_ prefix: : -: proto.h: function is declared as S_foo rather than foo, +: proto.h: function is declared as S_foo rather than foo unless the 'p' +: flag is also given in which case 'Perl_foo' is used, : PERL_STATIC_INLINE is added to declaration; -: embed.h: "#define foo S_foo" entries added +: embed.h: "#define foo S_foo" or Perl_foo entries added : : M May change: : @@ -76,7 +106,8 @@ : : m Implemented as a macro: : -: suppress proto.h entry (actually, not suppressed, but commented out) +: suppress proto.h entry unless 'b' also specified (actually, not +: suppressed, but commented out) : suppress entry in the list of exported symbols : suppress embed.h entry : @@ -93,10 +124,30 @@ : : o Has no Perl_foo or S_foo compatibility macro: : +: This can be used when you define a macro with this entry's name that +: doesn't call the function specified by this entry. This is typically +: done for a function that effectively just wraps another one, and where +: the macro form calls the underlying function directly. For these, also +: specify the 'm' flag. Legacy-only functions should instead use 'b'. +: : embed.h: suppress "#define foo Perl_foo" : -: P Pure function: no effects except the return value; -: return value depends only on params and/or globals: +: P Pure function: +: +: A pure function has no effects except the return value, and the return +: value depends only on params and/or globals. This is a hint to the +: compiler that it can optimize calls to this function out of common +: subexpressions. Consequently if this flag is wrongly specified, it can +: lead to subtle bugs that vary by platform, compiler, compiler version, +: and optimization level. Also, a future commit could easily change a +: currently-pure function without even noticing this flag. So it should +: be used sparingly, only for functions that are unlikely to ever become +: not pure by future commits. It should not be used for static +: functions, as the compiler already has the information needed to make +: the 'pure' determination and doesn't need any hint; so it doesn't add +: value in those cases, and could be dangerous if it causes the compiler +: to skip doing its own checks. It should not be used on functions that +: touch SVs, as those can trigger unexpected magic. Also implies "R": : : proto.h: add __attribute__pure__ : @@ -105,7 +156,7 @@ : proto.h: function is declared as Perl_foo rather than foo : embed.h: "#define foo Perl_foo" entries added : -: R Return value must not be ignored (also implied by 'a' flag): +: R Return value must not be ignored (also implied by 'a' and 'P' flags): : : proto.h: add __attribute__warn_unused_result__ : @@ -123,6 +174,13 @@ : : (currently no effect) : +: W Add a _pDEPTH argument to function prototypes, and an _aDEPTH +: argument to the function calls. This means that under DEBUGGING +: a depth argument is added to the functions, which is used for +: example by the regex engine for debugging and trace output. +: A non DEBUGGING build will not pass the unused argument. +: Currently restricted to functions with at least one argument. +: : X Explicitly exported: : : add entry to the list of exported symbols, unless x or m @@ -186,7 +244,7 @@ Ano |PerlInterpreter*|perl_clone_using \ Aanop |Malloc_t|malloc |MEM_SIZE nbytes Aanop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size -Aanop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes +ARnop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes Anop |Free_t |mfree |Malloc_t where #if defined(MYMALLOC) npR |MEM_SIZE|malloced_size |NN void *p @@ -224,6 +282,7 @@ ApdR |SV** |av_fetch |NN AV *av|SSize_t key|I32 lval Apd |void |av_fill |NN AV *av|SSize_t fill ApdR |SSize_t|av_len |NN AV *av ApdR |AV* |av_make |SSize_t size|NN SV **strp +p |SV* |av_nonelem |NN AV *av|SSize_t ix Apd |SV* |av_pop |NN AV *av ApdoxM |void |av_create_and_push|NN AV **const avp|NN SV *const val Apd |void |av_push |NN AV *av|NN SV *val @@ -231,9 +290,7 @@ Apd |void |av_push |NN AV *av|NN SV *val EXp |void |av_reify |NN AV *av ApdR |SV* |av_shift |NN AV *av Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val -#ifndef PERL_NO_INLINE_FUNCTIONS AidR |SSize_t|av_top_index |NN AV *av -#endif AmpdR |SSize_t|av_tindex |NN AV *av Apd |void |av_undef |NN AV *av ApdoxM |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val @@ -282,13 +339,14 @@ Anprd |void |croak_xs_usage |NN const CV *const cv \ |NN const char *const params npr |void |croak_no_mem nprX |void |croak_popstack +fnrp |void |croak_caller|NULLOK const char* pat|... fnprx |void |noperl_die|NN const char* pat|... #if defined(WIN32) norx |void |win32_croak_not_implemented|NN const char * fname #endif #if defined(PERL_IMPLICIT_CONTEXT) Afnrp |void |croak_nocontext|NULLOK const char* pat|... -Afnrp |OP* |die_nocontext |NULLOK const char* pat|... +Afnrp |OP* |die_nocontext |NULLOK const char* pat|... Afnp |void |deb_nocontext |NN const char* pat|... Afnp |char* |form_nocontext |NN const char* pat|... Anp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... @@ -300,8 +358,8 @@ Afnp |void |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|... Afnp |void |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|... Afnp |void |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... Afnp |void |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|... -Afnp |int |fprintf_nocontext|NN PerlIO *stream|NN const char *format|... -Afnp |int |printf_nocontext|NN const char *format|... +Abfnp |int |fprintf_nocontext|NN PerlIO *stream|NN const char *format|... +Abfnp |int |printf_nocontext|NN const char *format|... #endif : Used in pp.c p |SV * |core_prototype |NULLOK SV *sv|NN const char *name \ @@ -338,16 +396,21 @@ Afp |void |deb |NN const char* pat|... Ap |void |vdeb |NN const char* pat|NULLOK va_list* args Ap |void |debprofdump EXp |SV* |multideref_stringify |NN const OP* o|NULLOK CV *cv +EXp |SV* |multiconcat_stringify |NN const OP* o Ap |I32 |debop |NN const OP* o Ap |I32 |debstack Ap |I32 |debstackptrs pR |SV * |defelem_target |NN SV *sv|NULLOK MAGIC *mg Anp |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \ |NN const char* fromend|int delim|NN I32* retlen +np |char* |delimcpy_no_escape|NN char* to|NN const char* toend \ + |NN const char* from \ + |NN const char* fromend|int delim \ + |NN I32* retlen : Used in op.c, perl.c pM |void |delete_eval_scope -Aprd |OP* |die_sv |NN SV *baseex -Afrpd |OP* |die |NULLOK const char* pat|... +Aprd |OP* |die_sv |NN SV *baseex +Afrpd |OP* |die |NULLOK const char* pat|... : Used in util.c pr |void |die_unwind |NN SV* msv Ap |void |dounwind |I32 cxix @@ -355,7 +418,7 @@ Ap |void |dounwind |I32 cxix pmb |bool|do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp : Used in pp_sys.c p |bool|do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report -Ap |int |do_binmode |NN PerlIO *fp|int iotype|int mode +Abp |int |do_binmode |NN PerlIO *fp|int iotype|int mode : Used in pp.c Ap |bool |do_close |NULLOK GV* gv|bool not_implicit : Defined in doio.c, used only in pp_sys.c @@ -375,9 +438,9 @@ Ap |int |do_spawn_nowait|NN char* cmd #if !defined(WIN32) p |bool|do_exec3 |NN const char *incmd|int fd|int do_report #endif -p |void |do_execfree #if defined(PERL_IN_DOIO_C) s |void |exec_failed |NN const char *cmd|int fd|int do_report +s |bool |argvout_final |NN MAGIC *mg|NN IO *io|bool not_implicit #endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) : Defined in doio.c, used only in pp_sys.c @@ -400,9 +463,34 @@ Ap |void |do_join |NN SV *sv|NN SV *delim|NN SV **mark|NN SV **sp pR |I32 |do_ncmp |NN SV *const left|NN SV *const right Apmb |bool |do_open |NN GV* gv|NN const char* name|I32 len|int as_raw \ |int rawmode|int rawperm|NULLOK PerlIO* supplied_fp -Ap |bool |do_open9 |NN GV *gv|NN const char *name|I32 len|int as_raw \ +Abp |bool |do_open9 |NN GV *gv|NN const char *name|I32 len|int as_raw \ |int rawmode|int rawperm|NULLOK PerlIO *supplied_fp \ |NN SV *svs|I32 num +pn |void |setfd_cloexec|int fd +pn |void |setfd_inhexec|int fd +p |void |setfd_cloexec_for_nonsysfd|int fd +p |void |setfd_inhexec_for_sysfd|int fd +p |void |setfd_cloexec_or_inhexec_by_sysfdness|int fd +pR |int |PerlLIO_dup_cloexec|int oldfd +p |int |PerlLIO_dup2_cloexec|int oldfd|int newfd +pR |int |PerlLIO_open_cloexec|NN const char *file|int flag +pR |int |PerlLIO_open3_cloexec|NN const char *file|int flag|int perm +pnoR |int |my_mkstemp_cloexec|NN char *templte +#ifdef HAS_PIPE +pR |int |PerlProc_pipe_cloexec|NN int *pipefd +#endif +#ifdef HAS_SOCKET +pR |int |PerlSock_socket_cloexec|int domain|int type|int protocol +pR |int |PerlSock_accept_cloexec|int listenfd \ + |NULLOK struct sockaddr *addr \ + |NULLOK Sock_size_t *addrlen +#endif +#if defined (HAS_SOCKETPAIR) || \ + (defined (HAS_SOCKET) && defined(SOCK_DGRAM) && \ + defined(AF_INET) && defined(PF_INET)) +pR |int |PerlSock_socketpair_cloexec|int domain|int type|int protocol \ + |NN int *pairfd +#endif #if defined(PERL_IN_DOIO_C) s |IO * |openn_setup |NN GV *gv|NN char *mode|NN PerlIO **saveifp \ |NN PerlIO **saveofp|NN int *savefd \ @@ -411,14 +499,15 @@ s |bool |openn_cleanup |NN GV *gv|NN IO *io|NULLOK PerlIO *fp \ |NN char *mode|NN const char *oname \ |NULLOK PerlIO *saveifp|NULLOK PerlIO *saveofp \ |int savefd|char savetype|int writing \ - |bool was_fdopen|NULLOK const char *type + |bool was_fdopen|NULLOK const char *type \ + |NULLOK Stat_t *statbufp #endif Ap |bool |do_openn |NN GV *gv|NN const char *oname|I32 len \ |int as_raw|int rawmode|int rawperm \ |NULLOK PerlIO *supplied_fp|NULLOK SV **svp \ |I32 num Mp |bool |do_open_raw |NN GV *gv|NN const char *oname|STRLEN len \ - |int rawmode|int rawperm + |int rawmode|int rawperm|NULLOK Stat_t *statbufp Mp |bool |do_open6 |NN GV *gv|NN const char *oname|STRLEN len \ |NULLOK PerlIO *supplied_fp|NULLOK SV **svp \ |U32 num @@ -428,15 +517,15 @@ p |bool |do_print |NULLOK SV* sv|NN PerlIO* fp pR |OP* |do_readline : Defined in doio.c, used only in pp_sys.c p |bool |do_seek |NULLOK GV* gv|Off_t pos|int whence -Ap |void |do_sprintf |NN SV* sv|I32 len|NN SV** sarg +Ap |void |do_sprintf |NN SV* sv|SSize_t len|NN SV** sarg : Defined in doio.c, used only in pp_sys.c p |Off_t |do_sysseek |NN GV* gv|Off_t pos|int whence : Defined in doio.c, used only in pp_sys.c pR |Off_t |do_tell |NN GV* gv : Defined in doop.c, used only in pp.c -p |I32 |do_trans |NN SV* sv +p |Size_t |do_trans |NN SV* sv : Used in my.c and pp.c -p |UV |do_vecget |NN SV* sv|SSize_t offset|int size +p |UV |do_vecget |NN SV* sv|STRLEN offset|int size : Defined in doop.c, used only in mg.c (with /* XXX slurp this routine */) p |void |do_vecset |NN SV* sv : Defined in doop.c, used only in pp.c @@ -449,6 +538,7 @@ p |void |dump_all_perl |bool justperl Ap |void |dump_eval Ap |void |dump_form |NN const GV* gv Ap |void |gv_dump |NULLOK GV* gv +Apd |OPclass|op_class |NULLOK const OP *o Ap |void |op_dump |NN const OP *o Ap |void |pmop_dump |NULLOK PMOP* pm Ap |void |dump_packsubs |NN const HV* stash @@ -459,7 +549,6 @@ Apd |void |fbm_compile |NN SV* sv|U32 flags ApdR |char* |fbm_instr |NN unsigned char* big|NN unsigned char* bigend \ |NN SV* littlestr|U32 flags p |CV * |find_lexical_cv|PADOFFSET off -pR |OP * |parse_subsignature : Defined in util.c, used only in perl.c p |char* |find_script |NN const char *scriptname|bool dosearch \ |NULLOK const char *const *const search_ext|I32 flags @@ -473,7 +562,8 @@ i |void |op_relocate_sv |NN SV** svp|NN PADOFFSET* targp i |OP* |newMETHOP_internal |I32 type|I32 flags|NULLOK OP* dynamic_meth \ |NULLOK SV* const_meth : FIXME -s |OP* |fold_constants |NN OP *o +s |OP* |fold_constants |NN OP * const o +s |OP* |traverse_op_tree|NN OP* top|NN OP* o #endif Afpd |char* |form |NN const char* pat|... Ap |char* |vform |NN const char* pat|NULLOK va_list* args @@ -501,7 +591,7 @@ ApR |GV* |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \ ApR |GV* |gv_autoload_pvn |NULLOK HV* stash|NN const char* name \ |STRLEN len|U32 flags Ap |void |gv_check |NN HV* stash -Ap |void |gv_efullname |NN SV* sv|NN const GV* gv +Abp |void |gv_efullname |NN SV* sv|NN const GV* gv Apmb |void |gv_efullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_efullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain Ap |GV* |gv_fetchfile |NN const char* name @@ -531,7 +621,7 @@ ApM |GV* |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \ ApM |GV* |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \ |const STRLEN len|U32 flags Ap |GV* |gv_fetchpv |NN const char *nambeg|I32 add|const svtype sv_type -Ap |void |gv_fullname |NN SV* sv|NN const GV* gv +Abp |void |gv_fullname |NN SV* sv|NN const GV* gv Apmb |void |gv_fullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_fullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain : Used in scope.c @@ -564,14 +654,14 @@ Apd |void |hv_clear |NULLOK HV *hv : used in SAVEHINTS() and op.c ApdR |HV * |hv_copy_hints_hv|NULLOK HV *const ohv Ap |void |hv_delayfree_ent|NN HV *hv|NULLOK HE *entry -Abmd |SV* |hv_delete |NULLOK HV *hv|NN const char *key|I32 klen \ +Abmdp |SV* |hv_delete |NULLOK HV *hv|NN const char *key|I32 klen \ |I32 flags -Abmd |SV* |hv_delete_ent |NULLOK HV *hv|NN SV *keysv|I32 flags|U32 hash -AbmdR |bool |hv_exists |NULLOK HV *hv|NN const char *key|I32 klen -AbmdR |bool |hv_exists_ent |NULLOK HV *hv|NN SV *keysv|U32 hash -Abmd |SV** |hv_fetch |NULLOK HV *hv|NN const char *key|I32 klen \ +Abmdp |SV* |hv_delete_ent |NULLOK HV *hv|NN SV *keysv|I32 flags|U32 hash +AbmdRp |bool |hv_exists |NULLOK HV *hv|NN const char *key|I32 klen +AbmdRp |bool |hv_exists_ent |NULLOK HV *hv|NN SV *keysv|U32 hash +Abmdp |SV** |hv_fetch |NULLOK HV *hv|NN const char *key|I32 klen \ |I32 lval -Abmd |HE* |hv_fetch_ent |NULLOK HV *hv|NN SV *keysv|I32 lval|U32 hash +Abmdp |HE* |hv_fetch_ent |NULLOK HV *hv|NN SV *keysv|I32 lval|U32 hash Ap |void* |hv_common |NULLOK HV *hv|NULLOK SV *keysv \ |NULLOK const char* key|STRLEN klen|int flags \ |int action|NULLOK SV *val|U32 hash @@ -613,18 +703,18 @@ Xpd |struct refcounted_he *|refcounted_he_new_sv \ |U32 hash|NULLOK SV *value|U32 flags Xpd |void |refcounted_he_free|NULLOK struct refcounted_he *he Xpd |struct refcounted_he *|refcounted_he_inc|NULLOK struct refcounted_he *he -Abmd |SV** |hv_store |NULLOK HV *hv|NULLOK const char *key \ +Apbmd |SV** |hv_store |NULLOK HV *hv|NULLOK const char *key \ |I32 klen|NULLOK SV *val|U32 hash -Abmd |HE* |hv_store_ent |NULLOK HV *hv|NULLOK SV *key|NULLOK SV *val\ +Apbmd |HE* |hv_store_ent |NULLOK HV *hv|NULLOK SV *key|NULLOK SV *val\ |U32 hash -AbmM |SV** |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \ +ApbmM |SV** |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \ |I32 klen|NULLOK SV *val|U32 hash|int flags Amd |void |hv_undef |NULLOK HV *hv poX |void |hv_undef_flags |NULLOK HV *hv|U32 flags -Am |I32 |ibcmp |NN const char* a|NN const char* b|I32 len -AnpP |I32 |foldEQ |NN const char* a|NN const char* b|I32 len -Am |I32 |ibcmp_locale |NN const char* a|NN const char* b|I32 len -AnpP |I32 |foldEQ_locale |NN const char* a|NN const char* b|I32 len +AmP |I32 |ibcmp |NN const char* a|NN const char* b|I32 len +Ainp |I32 |foldEQ |NN const char* a|NN const char* b|I32 len +AmP |I32 |ibcmp_locale |NN const char* a|NN const char* b|I32 len +Ainp |I32 |foldEQ_locale |NN const char* a|NN const char* b|I32 len Am |I32 |ibcmp_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2 @@ -634,7 +724,7 @@ Amd |I32 |foldEQ_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ AMp |I32 |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2|U32 flags -AnpP |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len +Ainp |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len #if defined(PERL_IN_DOIO_C) sR |bool |ingroup |Gid_t testgid|bool effective #endif @@ -647,7 +737,7 @@ p |void |init_debugger Ap |void |init_stacks Ap |void |init_tm |NN struct tm *ptm : Used in perly.y -AnpPR |char* |instr |NN const char* big|NN const char* little +AbmnpPR |char* |instr |NN const char* big|NN const char* little : Used in sv.c p |bool |io_close |NN IO* io|NULLOK GV *gv \ |bool not_implicit|bool warn_on_fail @@ -656,36 +746,41 @@ pR |OP* |invert |NULLOK OP* cmd ApR |I32 |is_lvalue_sub : Used in cop.h XopR |I32 |was_lvalue_sub -#ifndef PERL_NO_INLINE_FUNCTIONS -AiMRn |STRLEN |_is_utf8_char_slow|NN const U8 *s|NN const U8 *e -#endif -ADMpPR |U32 |to_uni_upper_lc|U32 c -ADMpPR |U32 |to_uni_title_lc|U32 c -ADMpPR |U32 |to_uni_lower_lc|U32 c -ADMpPR |bool |is_uni_alnum |UV c -ADMpPR |bool |is_uni_alnumc |UV c -ADMpPR |bool |is_uni_idfirst |UV c -ADMpPR |bool |is_uni_alpha |UV c -ADMpPR |bool |is_uni_ascii |UV c -ADMpPR |bool |is_uni_blank |UV c -ADMpPR |bool |is_uni_space |UV c -ADMpPR |bool |is_uni_cntrl |UV c -ADMpPR |bool |is_uni_graph |UV c -ADMpPR |bool |is_uni_digit |UV c -ADMpPR |bool |is_uni_upper |UV c -ADMpPR |bool |is_uni_lower |UV c -ADMpPR |bool |is_uni_print |UV c -ADMpPR |bool |is_uni_punct |UV c -ADMpPR |bool |is_uni_xdigit |UV c +ApMRnP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags +AbDMpR |U32 |to_uni_upper_lc|U32 c +AbDMpR |U32 |to_uni_title_lc|U32 c +AbDMpR |U32 |to_uni_lower_lc|U32 c +AbDMpR |bool |is_uni_alnum |UV c +AbDMpR |bool |is_uni_alnumc |UV c +AbDMpR |bool |is_uni_idfirst |UV c +AbDMpR |bool |is_uni_alpha |UV c +AbDMpPR |bool |is_uni_ascii |UV c +AbDMpPR |bool |is_uni_blank |UV c +AbDMpPR |bool |is_uni_space |UV c +AbDMpPR |bool |is_uni_cntrl |UV c +AbDMpR |bool |is_uni_graph |UV c +AbDMpR |bool |is_uni_digit |UV c +AbDMpR |bool |is_uni_upper |UV c +AbDMpR |bool |is_uni_lower |UV c +AbDMpR |bool |is_uni_print |UV c +AbDMpR |bool |is_uni_punct |UV c +AbDMpPR |bool |is_uni_xdigit |UV c AMp |UV |to_uni_upper |UV c|NN U8 *p|NN STRLEN *lenp AMp |UV |to_uni_title |UV c|NN U8 *p|NN STRLEN *lenp -ADMpPR |bool |isIDFIRST_lazy |NN const char* p -ADMpPR |bool |isALNUM_lazy |NN const char* p +AbDMpR |bool |isIDFIRST_lazy |NN const char* p +AbDMpR |bool |isALNUM_lazy |NN const char* p +p |void |init_uniprops #ifdef PERL_IN_UTF8_C -snR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp +snR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp \ + |const char dummy +# ifndef UV_IS_QUAD +snR |int |is_utf8_cp_above_31_bits|NN const U8 * const s \ + |NN const U8 * const e \ + |const bool consider_overlongs +# endif #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -EXp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags +EXnp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s @@ -693,61 +788,130 @@ p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_o AMp |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp AMmp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp AMp |UV |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags -ADMpPR |bool |is_uni_alnum_lc|UV c -ADMpPR |bool |is_uni_alnumc_lc|UV c -ADMpPR |bool |is_uni_idfirst_lc|UV c +AbDMpR |bool |is_uni_alnum_lc|UV c +AbDMpR |bool |is_uni_alnumc_lc|UV c +AbDMpR |bool |is_uni_idfirst_lc|UV c AMpR |bool |_is_uni_perl_idcont|UV c AMpR |bool |_is_uni_perl_idstart|UV c -ADMpPR |bool |is_uni_alpha_lc|UV c -ADMpPR |bool |is_uni_ascii_lc|UV c -ADMpPR |bool |is_uni_space_lc|UV c -ADMpPR |bool |is_uni_blank_lc|UV c -ADMpPR |bool |is_uni_cntrl_lc|UV c -ADMpPR |bool |is_uni_graph_lc|UV c -ADMpPR |bool |is_uni_digit_lc|UV c -ADMpPR |bool |is_uni_upper_lc|UV c -ADMpPR |bool |is_uni_lower_lc|UV c -ADMpPR |bool |is_uni_print_lc|UV c -ADMpPR |bool |is_uni_punct_lc|UV c -ADMpPR |bool |is_uni_xdigit_lc|UV c -AnpdR |bool |is_invariant_string|NN const U8 *s|STRLEN len -AmpdR |bool |is_ascii_string|NN const U8 *s|STRLEN len -AnpdD |STRLEN |is_utf8_char |NN const U8 *s +AbDMpR |bool |is_uni_alpha_lc|UV c +AbDMpPR |bool |is_uni_ascii_lc|UV c +AbDMpPR |bool |is_uni_space_lc|UV c +AbDMpPR |bool |is_uni_blank_lc|UV c +AbDMpPR |bool |is_uni_cntrl_lc|UV c +AbDMpR |bool |is_uni_graph_lc|UV c +AbDMpR |bool |is_uni_digit_lc|UV c +AbDMpR |bool |is_uni_upper_lc|UV c +AbDMpR |bool |is_uni_lower_lc|UV c +AbDMpR |bool |is_uni_print_lc|UV c +AbDMpR |bool |is_uni_punct_lc|UV c +AbDMpPR |bool |is_uni_xdigit_lc|UV c +AndmoR |bool |is_utf8_invariant_string|NN const U8* const s \ + |STRLEN len +AnidR |bool |is_utf8_invariant_string_loc|NN const U8* const s \ + |STRLEN len \ + |NULLOK const U8 ** ep +#ifndef EBCDIC +AniR |unsigned int|_variant_byte_number|PERL_UINTMAX_T word +#endif +#if defined(PERL_CORE) || defined(PERL_EXT) +EinR |Size_t |variant_under_utf8_count|NN const U8* const s \ + |NN const U8* const e +#endif +AmnpdRP |bool |is_ascii_string|NN const U8* const s|STRLEN len +AmnpdRP |bool |is_invariant_string|NN const U8* const s|STRLEN len +#if defined(PERL_CORE) || defined (PERL_EXT) +EXnidR |bool |is_utf8_non_invariant_string|NN const U8* const s \ + |STRLEN len +#endif +AbnpdD |STRLEN |is_utf8_char |NN const U8 *s Abmnpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end -Anpd |bool |is_utf8_string |NN const U8 *s|STRLEN len -Anpdmb |bool |is_utf8_string_loc|NN const U8 *s|STRLEN len|NULLOK const U8 **ep -Anpd |bool |is_utf8_string_loclen|NN const U8 *s|STRLEN len|NULLOK const U8 **ep|NULLOK STRLEN *el +AnidR |Size_t |isUTF8_CHAR|NN const U8 * const s0 \ + |NN const U8 * const e +AnidR |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0 \ + |NN const U8 * const e +AnidR |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0 \ + |NN const U8 * const e +AnmdpR |bool |is_utf8_string |NN const U8 *s|STRLEN len +AnidR |bool |is_utf8_string_flags \ + |NN const U8 *s|STRLEN len|const U32 flags +AnmdpR |bool |is_strict_utf8_string|NN const U8 *s|STRLEN len +AnmdpR |bool |is_c9strict_utf8_string|NN const U8 *s|STRLEN len +Anpdmb |bool |is_utf8_string_loc \ + |NN const U8 *s|const STRLEN len|NN const U8 **ep +Andm |bool |is_utf8_string_loc_flags \ + |NN const U8 *s|STRLEN len|NN const U8 **ep \ + |const U32 flags +Andm |bool |is_strict_utf8_string_loc \ + |NN const U8 *s|STRLEN len|NN const U8 **ep +Andm |bool |is_c9strict_utf8_string_loc \ + |NN const U8 *s|STRLEN len|NN const U8 **ep +Anipd |bool |is_utf8_string_loclen \ + |NN const U8 *s|STRLEN len|NULLOK const U8 **ep \ + |NULLOK STRLEN *el +Anid |bool |is_utf8_string_loclen_flags \ + |NN const U8 *s|STRLEN len|NULLOK const U8 **ep \ + |NULLOK STRLEN *el|const U32 flags +Anid |bool |is_strict_utf8_string_loclen \ + |NN const U8 *s|STRLEN len|NULLOK const U8 **ep \ + |NULLOK STRLEN *el +Anid |bool |is_c9strict_utf8_string_loclen \ + |NN const U8 *s|STRLEN len|NULLOK const U8 **ep \ + |NULLOK STRLEN *el +Amnd |bool |is_utf8_fixed_width_buf_flags \ + |NN const U8 * const s|STRLEN len|const U32 flags +Amnd |bool |is_utf8_fixed_width_buf_loc_flags \ + |NN const U8 * const s|STRLEN len \ + |NULLOK const U8 **ep|const U32 flags +Anid |bool |is_utf8_fixed_width_buf_loclen_flags \ + |NN const U8 * const s|STRLEN len \ + |NULLOK const U8 **ep|NULLOK STRLEN *el|const U32 flags +AmndP |bool |is_utf8_valid_partial_char \ + |NN const U8 * const s|NN const U8 * const e +AnidR |bool |is_utf8_valid_partial_char_flags \ + |NN const U8 * const s|NN const U8 * const e|const U32 flags AMpR |bool |_is_uni_FOO|const U8 classnum|const UV c -AMpR |bool |_is_utf8_FOO|const U8 classnum|NN const U8 *p -ADMpR |bool |is_utf8_alnum |NN const U8 *p -ADMpR |bool |is_utf8_alnumc |NN const U8 *p -ADMpR |bool |is_utf8_idfirst|NN const U8 *p -ADMpR |bool |is_utf8_xidfirst|NN const U8 *p +AMpR |bool |_is_utf8_FOO|U8 classnum|NN const U8 * const p \ + |NN const char * const name \ + |NN const char * const alternative \ + |const bool use_utf8|const bool use_locale \ + |NN const char * const file|const unsigned line +AMpR |bool |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p \ + |NN const U8 * const e +AbDMpR |bool |is_utf8_alnum |NN const U8 *p +AbDMpR |bool |is_utf8_alnumc |NN const U8 *p +AbDMpR |bool |is_utf8_idfirst|NN const U8 *p +AbDMpR |bool |is_utf8_xidfirst|NN const U8 *p AMpR |bool |_is_utf8_idcont|NN const U8 *p AMpR |bool |_is_utf8_idstart|NN const U8 *p AMpR |bool |_is_utf8_xidcont|NN const U8 *p AMpR |bool |_is_utf8_xidstart|NN const U8 *p -AMpR |bool |_is_utf8_perl_idcont|NN const U8 *p -AMpR |bool |_is_utf8_perl_idstart|NN const U8 *p -ADMpR |bool |is_utf8_idcont |NN const U8 *p -ADMpR |bool |is_utf8_xidcont |NN const U8 *p -ADMpR |bool |is_utf8_alpha |NN const U8 *p -ADMpR |bool |is_utf8_ascii |NN const U8 *p -ADMpR |bool |is_utf8_blank |NN const U8 *p -ADMpR |bool |is_utf8_space |NN const U8 *p -ADMpR |bool |is_utf8_perl_space |NN const U8 *p -ADMpR |bool |is_utf8_perl_word |NN const U8 *p -ADMpR |bool |is_utf8_cntrl |NN const U8 *p -ADMpR |bool |is_utf8_digit |NN const U8 *p -ADMpR |bool |is_utf8_posix_digit |NN const U8 *p -ADMpR |bool |is_utf8_graph |NN const U8 *p -ADMpR |bool |is_utf8_upper |NN const U8 *p -ADMpR |bool |is_utf8_lower |NN const U8 *p -ADMpR |bool |is_utf8_print |NN const U8 *p -ADMpR |bool |is_utf8_punct |NN const U8 *p -ADMpR |bool |is_utf8_xdigit |NN const U8 *p +AMpR |bool |_is_utf8_perl_idcont_with_len|NN const U8 *p \ + |NN const U8 * const e +AMpR |bool |_is_utf8_perl_idstart_with_len|NN const U8 *p \ + |NN const U8 * const e +AbDMpR |bool |is_utf8_idcont |NN const U8 *p +AbDMpR |bool |is_utf8_xidcont |NN const U8 *p +AbDMpR |bool |is_utf8_alpha |NN const U8 *p +AbDMpR |bool |is_utf8_ascii |NN const U8 *p +AbDMpR |bool |is_utf8_blank |NN const U8 *p +AbDMpR |bool |is_utf8_space |NN const U8 *p +AbDMpR |bool |is_utf8_perl_space |NN const U8 *p +AbDMpR |bool |is_utf8_perl_word |NN const U8 *p +AbDMpR |bool |is_utf8_cntrl |NN const U8 *p +AbDMpR |bool |is_utf8_digit |NN const U8 *p +AbDMpR |bool |is_utf8_posix_digit |NN const U8 *p +AbDMpR |bool |is_utf8_graph |NN const U8 *p +AbDMpR |bool |is_utf8_upper |NN const U8 *p +AbDMpR |bool |is_utf8_lower |NN const U8 *p +AbDMpR |bool |is_utf8_print |NN const U8 *p +AbDMpR |bool |is_utf8_punct |NN const U8 *p +AbDMpR |bool |is_utf8_xdigit |NN const U8 *p AMpR |bool |_is_utf8_mark |NN const U8 *p -ADMpR |bool |is_utf8_mark |NN const U8 *p +AbDMpR |bool |is_utf8_mark |NN const U8 *p +#if defined(PERL_CORE) || defined(PERL_EXT) +EXdpR |bool |isSCRIPT_RUN |NN const U8 *s|NN const U8 *send \ + |const bool utf8_target +#endif : Used in perly.y p |OP* |jmaybe |NN OP *o : Used in pp.c @@ -756,6 +920,7 @@ pP |I32 |keyword |NN const char *name|I32 len|bool all_keywords s |void |inplace_aassign |NN OP* o #endif Ap |void |leave_scope |I32 base +p |void |notify_parser_that_changed_to_utf8 : Public lexer API AMpd |void |lex_start |NULLOK SV* line|NULLOK PerlIO *rsfp|U32 flags AMpd |bool |lex_bufutf8 @@ -788,9 +953,7 @@ Ap |void |op_refcnt_lock Ap |void |op_refcnt_unlock Apdn |OP* |op_sibling_splice|NULLOK OP *parent|NULLOK OP *start \ |int del_count|NULLOK OP* insert -#ifdef PERL_OP_PARENT Apdn |OP* |op_parent|NN OP *o -#endif #if defined(PERL_IN_OP_C) s |OP* |listkids |NULLOK OP* o #endif @@ -802,14 +965,18 @@ p |OP* |localize |NN OP *o|I32 lex ApdR |I32 |looks_like_number|NN SV *const sv Apd |UV |grok_bin |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) -EMpRX |bool |grok_bslash_x |NN char** s|NN UV* uv \ +EMpRX |bool |grok_bslash_x |NN char** s \ + |NN const char* const send \ + |NN UV* uv \ |NN const char** error_msg \ |const bool output_warning \ |const bool strict \ |const bool silence_non_portable \ |const bool utf8 EMpRX |char |grok_bslash_c |const char source|const bool output_warning -EMpRX |bool |grok_bslash_o |NN char** s|NN UV* uv \ +EMpRX |bool |grok_bslash_o |NN char** s \ + |NN const char* const send \ + |NN UV* uv \ |NN const char** error_msg \ |const bool output_warning \ |const bool strict \ @@ -817,7 +984,7 @@ EMpRX |bool |grok_bslash_o |NN char** s|NN UV* uv \ |const bool utf8 EMiR |char*|form_short_octal_warning|NN const char * const s \ |const STRLEN len -EiPRn |I32 |regcurly |NN const char *s +EiRn |I32 |regcurly |NN const char *s #endif Apd |UV |grok_hex |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result Apd |int |grok_infnan |NN const char** sp|NN const char *send @@ -868,6 +1035,7 @@ p |int |magic_freearylen_p|NN SV* sv|NN MAGIC* mg p |int |magic_setdbline|NN SV* sv|NN MAGIC* mg p |int |magic_setdebugvar|NN SV* sv|NN MAGIC* mg p |int |magic_setdefelem|NN SV* sv|NN MAGIC* mg +p |int |magic_setnonelem|NN SV* sv|NN MAGIC* mg p |int |magic_setenv |NN SV* sv|NN MAGIC* mg dp |int |magic_sethint |NN SV* sv|NN MAGIC* mg p |int |magic_setisa |NN SV* sv|NN MAGIC* mg @@ -892,8 +1060,14 @@ pod |SV* |magic_methcall |NN SV *sv|NN const MAGIC *mg \ Ap |I32 * |markstack_grow #if defined(USE_LOCALE_COLLATE) p |int |magic_setcollxfrm|NN SV* sv|NN MAGIC* mg +pb |char* |mem_collxfrm |NN const char* input_string|STRLEN len|NN STRLEN* xlen : Defined in locale.c, used only in sv.c -p |char* |mem_collxfrm |NN const char* s|STRLEN len|NN STRLEN* xlen +# if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C) +pM |char* |_mem_collxfrm |NN const char* input_string \ + |STRLEN len \ + |NN STRLEN* xlen \ + |bool utf8 +# endif #endif Afpd |SV* |mess |NN const char* pat|... Apd |SV* |mess_sv |NN SV* basemsg|bool consume @@ -908,12 +1082,14 @@ Apd |int |mg_copy |NN SV *sv|NN SV *nsv|NULLOK const char *key \ |I32 klen : Defined in mg.c, used only in scope.c pd |void |mg_localize |NN SV* sv|NN SV* nsv|bool setmagic +Apd |SV* |sv_string_from_errnum|int errnum|NULLOK SV* tgtsv ApdRn |MAGIC* |mg_find |NULLOK const SV* sv|int type ApdRn |MAGIC* |mg_findext |NULLOK const SV* sv|int type|NULLOK const MGVTBL *vtbl : exported for re.pm EXpR |MAGIC* |mg_find_mglob |NN SV* sv Apd |int |mg_free |NN SV* sv Apd |void |mg_free_type |NN SV* sv|int how +Apd |void |mg_freeext |NN SV* sv|int how|NULLOK const MGVTBL *vtbl Apd |int |mg_get |NN SV* sv ApdD |U32 |mg_length |NN SV* sv Apdn |void |mg_magical |NN SV* sv @@ -923,20 +1099,18 @@ Apn |void |mini_mktime |NN struct tm *ptm AMmd |OP* |op_lvalue |NULLOK OP* o|I32 type poX |OP* |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags p |void |finalize_optree |NN OP* o +p |void |optimize_optree|NN OP* o #if defined(PERL_IN_OP_C) +s |void |optimize_op |NN OP* o s |void |finalize_op |NN OP* o -s |void |move_proto_attr|NN OP **proto|NN OP **attrs|NN const GV *name +s |void |move_proto_attr|NN OP **proto|NN OP **attrs \ + |NN const GV *name|bool curstash #endif : Used in op.c and pp_sys.c p |int |mode_from_discipline|NULLOK const char* s|STRLEN len Ap |const char* |moreswitches |NN const char* s Ap |NV |my_atof |NN const char *s -#if !defined(HAS_MEMCPY) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY)) -Anp |void* |my_bcopy |NN const void* vfrom|NN void* vto|size_t len -#endif -#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) -Anp |void* |my_bzero |NN void* vloc|size_t len -#endif +AnpR |NV |my_strtod |NN const char * const s|NULLOK char ** e Apr |void |my_exit |U32 status Apr |void |my_failure_exit Ap |I32 |my_fflush_all @@ -945,11 +1119,8 @@ Anp |void |atfork_lock Anp |void |atfork_unlock Apmb |I32 |my_lstat pX |I32 |my_lstat_flags |NULLOK const U32 flags -#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) -AnpP |int |my_memcmp |NN const void* vs1|NN const void* vs2|size_t len -#endif -#if !defined(HAS_MEMSET) -Anp |void* |my_memset |NN void* vloc|int ch|size_t len +#if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT)) +Exin |void * |my_memrchr |NN const char * s|const char c|const STRLEN len #endif #if !defined(PERL_IMPLICIT_SYS) Ap |I32 |my_pclose |NULLOK PerlIO* ptr @@ -962,32 +1133,33 @@ pX |I32 |my_stat_flags |NULLOK const U32 flags Afp |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst : Used in pp_ctl.c p |void |my_unexec -ADMnoPR |UV |NATIVE_TO_NEED |const UV enc|const UV ch -ADMnoPR |UV |ASCII_TO_NEED |const UV enc|const UV ch -Apa |OP* |newANONLIST |NULLOK OP* o -Apa |OP* |newANONHASH |NULLOK OP* o +AbDMnPR |UV |NATIVE_TO_NEED |const UV enc|const UV ch +AbDMnPR |UV |ASCII_TO_NEED |const UV enc|const UV ch +ApR |OP* |newANONLIST |NULLOK OP* o +ApR |OP* |newANONHASH |NULLOK OP* o Ap |OP* |newANONSUB |I32 floor|NULLOK OP* proto|NULLOK OP* block -Apda |OP* |newASSIGNOP |I32 flags|NULLOK OP* left|I32 optype|NULLOK OP* right -Apda |OP* |newCONDOP |I32 flags|NN OP* first|NULLOK OP* trueop|NULLOK OP* falseop +ApdR |OP* |newASSIGNOP |I32 flags|NULLOK OP* left|I32 optype|NULLOK OP* right +ApdR |OP* |newCONDOP |I32 flags|NN OP* first|NULLOK OP* trueop|NULLOK OP* falseop Apd |CV* |newCONSTSUB |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv Apd |CV* |newCONSTSUB_flags|NULLOK HV* stash \ |NULLOK const char* name|STRLEN len \ |U32 flags|NULLOK SV* sv Ap |void |newFORM |I32 floor|NULLOK OP* o|NULLOK OP* block -Apda |OP* |newFOROP |I32 flags|NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont -Apda |OP* |newGIVENOP |NN OP* cond|NN OP* block|PADOFFSET defsv_off -Apda |OP* |newLOGOP |I32 optype|I32 flags|NN OP *first|NN OP *other -Apda |OP* |newLOOPEX |I32 type|NN OP* label -Apda |OP* |newLOOPOP |I32 flags|I32 debuggable|NULLOK OP* expr|NULLOK OP* block -Apda |OP* |newNULLLIST -Apda |OP* |newOP |I32 optype|I32 flags +ApdR |OP* |newFOROP |I32 flags|NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont +ApdR |OP* |newGIVENOP |NN OP* cond|NN OP* block|PADOFFSET defsv_off +ApdR |OP* |newLOGOP |I32 optype|I32 flags|NN OP *first|NN OP *other +pM |LOGOP* |alloc_LOGOP |I32 type|NULLOK OP *first|NULLOK OP *other +ApdR |OP* |newLOOPEX |I32 type|NN OP* label +ApdR |OP* |newLOOPOP |I32 flags|I32 debuggable|NULLOK OP* expr|NULLOK OP* block +ApdR |OP* |newNULLLIST +ApdR |OP* |newOP |I32 optype|I32 flags Ap |void |newPROG |NN OP* o -Apda |OP* |newRANGE |I32 flags|NN OP* left|NN OP* right -Apda |OP* |newSLICEOP |I32 flags|NULLOK OP* subscript|NULLOK OP* listop -Apda |OP* |newSTATEOP |I32 flags|NULLOK char* label|NULLOK OP* o -Abm |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto \ +ApdR |OP* |newRANGE |I32 flags|NN OP* left|NN OP* right +ApdR |OP* |newSLICEOP |I32 flags|NULLOK OP* subscript|NULLOK OP* listop +ApdR |OP* |newSTATEOP |I32 flags|NULLOK char* label|NULLOK OP* o +Apbm |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto \ |NULLOK OP* block -p |CV * |newXS_len_flags|NULLOK const char *name|STRLEN len \ +pd |CV * |newXS_len_flags|NULLOK const char *name|STRLEN len \ |NN XSUBADDR_t subaddr\ |NULLOK const char *const filename \ |NULLOK const char *const proto \ @@ -998,57 +1170,59 @@ ApM |CV * |newXS_flags |NULLOK const char *name|NN XSUBADDR_t subaddr\ |NULLOK const char *const proto|U32 flags Apd |CV* |newXS |NULLOK const char *name|NN XSUBADDR_t subaddr\ |NN const char *filename -AmdbR |AV* |newAV -Apa |OP* |newAVREF |NN OP* o -Apda |OP* |newBINOP |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last -Apa |OP* |newCVREF |I32 flags|NULLOK OP* o -Apda |OP* |newGVOP |I32 type|I32 flags|NN GV* gv +ApmdbR |AV* |newAV +ApR |OP* |newAVREF |NN OP* o +ApdR |OP* |newBINOP |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last +ApR |OP* |newCVREF |I32 flags|NULLOK OP* o +ApdR |OP* |newGVOP |I32 type|I32 flags|NN GV* gv Am |GV* |newGVgen |NN const char* pack -Apa |GV* |newGVgen_flags |NN const char* pack|U32 flags -Apa |OP* |newGVREF |I32 type|NULLOK OP* o -ApaR |OP* |newHVREF |NN OP* o -AmdbR |HV* |newHV -ApaR |HV* |newHVhv |NULLOK HV *hv -Apabm |IO* |newIO -Apda |OP* |newLISTOP |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last -AMpdan |PADNAME *|newPADNAMEouter|NN PADNAME *outer -AMpdan |PADNAME *|newPADNAMEpvn|NN const char *s|STRLEN len -AMpdan |PADNAMELIST *|newPADNAMELIST|size_t max +ApR |GV* |newGVgen_flags |NN const char* pack|U32 flags +ApR |OP* |newGVREF |I32 type|NULLOK OP* o +ApR |OP* |newHVREF |NN OP* o +ApmdbR |HV* |newHV +ApR |HV* |newHVhv |NULLOK HV *hv +ApRbm |IO* |newIO +ApdR |OP* |newLISTOP |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last +AMpdRn |PADNAME *|newPADNAMEouter|NN PADNAME *outer +AMpdRn |PADNAME *|newPADNAMEpvn|NN const char *s|STRLEN len +AMpdRn |PADNAMELIST *|newPADNAMELIST|size_t max #ifdef USE_ITHREADS -Apda |OP* |newPADOP |I32 type|I32 flags|NN SV* sv -#endif -Apda |OP* |newPMOP |I32 type|I32 flags -Apda |OP* |newPVOP |I32 type|I32 flags|NULLOK char* pv -Apa |SV* |newRV |NN SV *const sv -Apda |SV* |newRV_noinc |NN SV *const tmpRef -Apda |SV* |newSV |const STRLEN len -Apa |OP* |newSVREF |NN OP* o -Apda |OP* |newSVOP |I32 type|I32 flags|NN SV* sv +ApdR |OP* |newPADOP |I32 type|I32 flags|NN SV* sv +#endif +ApdR |OP* |newPMOP |I32 type|I32 flags +ApdR |OP* |newPVOP |I32 type|I32 flags|NULLOK char* pv +ApR |SV* |newRV |NN SV *const sv +ApdR |SV* |newRV_noinc |NN SV *const tmpRef +ApdR |SV* |newSV |const STRLEN len +ApR |OP* |newSVREF |NN OP* o +ApdR |OP* |newSVOP |I32 type|I32 flags|NN SV* sv ApdR |OP* |newDEFSVOP -pa |SV* |newSVavdefelem |NN AV *av|SSize_t ix|bool extendible -Apda |SV* |newSViv |const IV i -Apda |SV* |newSVuv |const UV u -Apda |SV* |newSVnv |const NV n -Apda |SV* |newSVpv |NULLOK const char *const s|const STRLEN len -Apda |SV* |newSVpvn |NULLOK const char *const s|const STRLEN len -Apda |SV* |newSVpvn_flags |NULLOK const char *const s|const STRLEN len|const U32 flags -Apda |SV* |newSVhek |NULLOK const HEK *const hek -Apda |SV* |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash -Apda |SV* |newSVpv_share |NULLOK const char* s|U32 hash -Afpda |SV* |newSVpvf |NN const char *const pat|... -Apa |SV* |vnewSVpvf |NN const char *const pat|NULLOK va_list *const args +pR |SV* |newSVavdefelem |NN AV *av|SSize_t ix|bool extendible +ApdR |SV* |newSViv |const IV i +ApdR |SV* |newSVuv |const UV u +ApdR |SV* |newSVnv |const NV n +ApdR |SV* |newSVpv |NULLOK const char *const s|const STRLEN len +ApdR |SV* |newSVpvn |NULLOK const char *const buffer|const STRLEN len +ApdR |SV* |newSVpvn_flags |NULLOK const char *const s|const STRLEN len|const U32 flags +ApdR |SV* |newSVhek |NULLOK const HEK *const hek +ApdR |SV* |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash +ApdR |SV* |newSVpv_share |NULLOK const char* s|U32 hash +AfpdR |SV* |newSVpvf |NN const char *const pat|... +ApR |SV* |vnewSVpvf |NN const char *const pat|NULLOK va_list *const args Apd |SV* |newSVrv |NN SV *const rv|NULLOK const char *const classname -Apda |SV* |newSVsv |NULLOK SV *const old -Apda |SV* |newSV_type |const svtype type -Apda |OP* |newUNOP |I32 type|I32 flags|NULLOK OP* first -Apda |OP* |newUNOP_AUX |I32 type|I32 flags|NULLOK OP* first \ +ApmbdR |SV* |newSVsv |NULLOK SV *const old +ApmdR |SV* |newSVsv_nomg |NULLOK SV *const old +ApR |SV* |newSVsv_flags |NULLOK SV *const old|I32 flags +ApdR |SV* |newSV_type |const svtype type +ApdR |OP* |newUNOP |I32 type|I32 flags|NULLOK OP* first +ApdR |OP* |newUNOP_AUX |I32 type|I32 flags|NULLOK OP* first \ |NULLOK UNOP_AUX_item *aux -Apda |OP* |newWHENOP |NULLOK OP* cond|NN OP* block -Apda |OP* |newWHILEOP |I32 flags|I32 debuggable|NULLOK LOOP* loop \ +ApdR |OP* |newWHENOP |NULLOK OP* cond|NN OP* block +ApdR |OP* |newWHILEOP |I32 flags|I32 debuggable|NULLOK LOOP* loop \ |NULLOK OP* expr|NULLOK OP* block|NULLOK OP* cont \ |I32 has_my -Apda |OP* |newMETHOP |I32 type|I32 flags|NN OP* dynamic_meth -Apda |OP* |newMETHOP_named|I32 type|I32 flags|NN SV* const_meth +ApdR |OP* |newMETHOP |I32 type|I32 flags|NN OP* dynamic_meth +ApdR |OP* |newMETHOP_named|I32 type|I32 flags|NN SV* const_meth Apd |CV* |rv2cv_op_cv |NN OP *cvop|U32 flags Apd |OP* |ck_entersub_args_list|NN OP *entersubop Apd |OP* |ck_entersub_args_proto|NN OP *entersubop|NN GV *namegv|NN SV *protosv @@ -1056,12 +1230,14 @@ Apd |OP* |ck_entersub_args_proto_or_list|NN OP *entersubop|NN GV *namegv|NN SV * po |OP* |ck_entersub_args_core|NN OP *entersubop|NN GV *namegv \ |NN SV *protosv Apd |void |cv_get_call_checker|NN CV *cv|NN Perl_call_checker *ckfun_p|NN SV **ckobj_p +Apd |void |cv_get_call_checker_flags|NN CV *cv|U32 gflags|NN Perl_call_checker *ckfun_p|NN SV **ckobj_p|NN U32 *ckflags_p Apd |void |cv_set_call_checker|NN CV *cv|NN Perl_call_checker ckfun|NN SV *ckobj Apd |void |cv_set_call_checker_flags|NN CV *cv \ |NN Perl_call_checker ckfun \ - |NN SV *ckobj|U32 flags + |NN SV *ckobj|U32 ckflags Apd |void |wrap_op_checker|Optype opcode|NN Perl_check_t new_checker|NN Perl_check_t *old_checker_p -Apa |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems +AMpd |void |wrap_keyword_plugin|NN Perl_keyword_plugin_t new_plugin|NN Perl_keyword_plugin_t *old_plugin_p +ApR |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems Ap |char* |scan_vstring |NN const char *s|NN const char *const e \ |NN SV *sv Apd |const char* |scan_version |NN const char *s|NN SV *rv|bool qv @@ -1077,8 +1253,13 @@ Apd |SV* |vstringify |NN SV *vs Apd |int |vcmp |NN SV *lhv|NN SV *rhv : Used in pp_hot.c and pp_sys.c p |PerlIO*|nextargv |NN GV* gv|bool nomagicopen -AnpP |char* |ninstr |NN const char* big|NN const char* bigend \ +#ifdef HAS_MEMMEM +AdnopP |char* |ninstr |NN const char* big|NN const char* bigend \ |NN const char* little|NN const char* lend +#else +AdnpP |char* |ninstr |NN const char* big|NN const char* bigend \ + |NN const char* little|NN const char* lend +#endif Apd |void |op_free |NULLOK OP* arg Mp |OP* |op_unscope |NULLOK OP* o #ifdef PERL_CORE @@ -1118,7 +1299,7 @@ Ap |void |call_atexit |ATEXIT_t fn|NULLOK void *ptr ApdO |I32 |call_argv |NN const char* sub_name|I32 flags|NN char** argv ApdO |I32 |call_method |NN const char* methname|I32 flags ApdO |I32 |call_pv |NN const char* sub_name|I32 flags -ApdO |I32 |call_sv |NN SV* sv|VOL I32 flags +ApdO |I32 |call_sv |NN SV* sv|volatile I32 flags Ap |void |despatch_signals Ap |OP * |doref |NN OP *o|I32 type|bool set_op_ref ApdO |SV* |eval_pv |NN const char* p|I32 croak_on_error @@ -1128,25 +1309,25 @@ ApdO |AV* |get_av |NN const char *name|I32 flags ApdO |HV* |get_hv |NN const char *name|I32 flags ApdO |CV* |get_cv |NN const char* name|I32 flags Apd |CV* |get_cvn_flags |NN const char* name|STRLEN len|I32 flags -#ifdef WIN32 -ApPM |char* |my_setlocale |int category|NULLOK const char* locale +Ando |const char*|Perl_setlocale|const int category|NULLOK const char* locale +#if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H) +Ando |const char*|Perl_langinfo|const nl_item item #else -AmPM |char* |my_setlocale |int category|NULLOK const char* locale +Ando |const char*|Perl_langinfo|const int item #endif ApOM |int |init_i18nl10n |int printwarn -ApOM |int |init_i18nl14n |int printwarn -ApM |char* |my_strerror |const int errnum -ApOM |void |new_collate |NULLOK const char* newcoll -ApOM |void |new_ctype |NN const char* newctype -EXpMn |void |_warn_problematic_locale -ApOM |void |new_numeric |NULLOK const char* newcoll -Ap |void |set_numeric_local -Ap |void |set_numeric_radix -Ap |void |set_numeric_standard -ApM |bool |_is_in_locale_category|const bool compiling|const int category -Apd |void |sync_locale +AbpOM |int |init_i18nl14n |int printwarn +p |char* |my_strerror |const int errnum +Xpn |void |_warn_problematic_locale +Xp |void |set_numeric_underlying +Xp |void |set_numeric_standard +Xp |bool |_is_in_locale_category|const bool compiling|const int category +Apdn |void |switch_to_global_locale +Apdn |bool |sync_locale +ApMn |void |thread_locale_init +ApMn |void |thread_locale_term ApdO |void |require_pv |NN const char* pv -Apd |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \ +Abpd |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \ |NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) @@ -1154,22 +1335,19 @@ s |void |pidgone |Pid_t pid|int status #endif : Used in perly.y p |OP* |pmruntime |NN OP *o|NN OP *expr|NULLOK OP *repl \ - |bool isreg|I32 floor + |UV flags|I32 floor #if defined(PERL_IN_OP_C) s |OP* |pmtrans |NN OP* o|NN OP* expr|NN OP* repl #endif Ap |void |pop_scope Ap |void |push_scope -Amb |OP* |ref |NULLOK OP* o|I32 type +Apmb |OP* |ref |NULLOK OP* o|I32 type #if defined(PERL_IN_OP_C) s |OP* |refkids |NULLOK OP* o|I32 type #endif Ap |void |regdump |NN const regexp* r -ApM |SV* |regclass_swash |NULLOK const regexp *prog \ - |NN const struct regnode *node|bool doinit \ - |NULLOK SV **listsvp|NULLOK SV **altsvp #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) -AMpR |SV* |_new_invlist_C_array|NN const UV* const list +EXpR |SV* |_new_invlist_C_array|NN const UV* const list EXMp |bool |_invlistEQ |NN SV* const a|NN SV* const b|const bool complement_b #endif Ap |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \ @@ -1178,7 +1356,7 @@ Ap |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \ Ap |void |pregfree |NULLOK REGEXP* r Ap |void |pregfree2 |NN REGEXP *rx : FIXME - is anything in re using this now? -EXp |REGEXP*|reg_temp_copy |NULLOK REGEXP* ret_x|NN REGEXP* rx +EXp |REGEXP*|reg_temp_copy |NULLOK REGEXP* dsv|NN REGEXP* ssv Ap |void |regfree_internal|NN REGEXP *const rx #if defined(USE_ITHREADS) Ap |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param @@ -1190,7 +1368,7 @@ p |REGEXP*|re_op_compile |NULLOK SV ** const patternp \ |NN const regexp_engine* eng \ |NULLOK REGEXP *old_re \ |NULLOK bool *is_bare_re \ - |U32 rx_flags|U32 pm_flags + |const U32 rx_flags|const U32 pm_flags Ap |REGEXP*|re_compile |NN SV * const pattern|U32 orig_rx_flags Ap |char* |re_intuit_start|NN REGEXP * const rx \ |NULLOK SV* sv \ @@ -1205,16 +1383,16 @@ Ap |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \ |SSize_t minend|NN SV *sv \ |NULLOK void *data|U32 flags ApR |regnode*|regnext |NULLOK regnode* p -EXp |SV*|reg_named_buff |NN REGEXP * const rx|NULLOK SV * const key \ +EXp |SV*|reg_named_buff |NN REGEXP * const rx|NULLOK SV * const key \ |NULLOK SV * const value|const U32 flags -EXp |SV*|reg_named_buff_iter |NN REGEXP * const rx|NULLOK const SV * const lastkey \ +EXp |SV*|reg_named_buff_iter |NN REGEXP * const rx|NULLOK const SV * const lastkey \ |const U32 flags -Ap |SV*|reg_named_buff_fetch |NN REGEXP * const rx|NN SV * const namesv|const U32 flags -Ap |bool|reg_named_buff_exists |NN REGEXP * const rx|NN SV * const key|const U32 flags -Ap |SV*|reg_named_buff_firstkey |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_nextkey |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_scalar |NN REGEXP * const rx|const U32 flags -Ap |SV*|reg_named_buff_all |NN REGEXP * const rx|const U32 flags +Ap |SV*|reg_named_buff_fetch |NN REGEXP * const rx|NN SV * const namesv|const U32 flags +Ap |bool|reg_named_buff_exists |NN REGEXP * const rx|NN SV * const key|const U32 flags +Ap |SV*|reg_named_buff_firstkey |NN REGEXP * const rx|const U32 flags +Ap |SV*|reg_named_buff_nextkey |NN REGEXP * const rx|const U32 flags +Ap |SV*|reg_named_buff_scalar |NN REGEXP * const rx|const U32 flags +Ap |SV*|reg_named_buff_all |NN REGEXP * const rx|const U32 flags : FIXME - is anything in re using this now? EXp |void|reg_numbered_buff_fetch|NN REGEXP * const rx|const I32 paren|NULLOK SV * const sv @@ -1227,7 +1405,7 @@ EXp |I32|reg_numbered_buff_length|NN REGEXP * const rx|NN const SV * const sv|co EXp |SV*|reg_qr_package|NN REGEXP * const rx Anp |void |repeatcpy |NN char* to|NN const char* from|I32 len|IV count -AnpP |char* |rninstr |NN const char* big|NN const char* bigend \ +AdnpP |char* |rninstr |NN const char* big|NN const char* bigend \ |NN const char* little|NN const char* lend Ap |Sighandler_t|rsignal |int i|Sighandler_t t : Used in pp_sys.c @@ -1288,10 +1466,10 @@ Ap |void |save_I8 |NN I8* bytep Ap |void |save_int |NN int* intp Ap |void |save_item |NN SV* item Ap |void |save_iv |NN IV *ivp -Ap |void |save_list |NN SV** sarg|I32 maxsarg -Ap |void |save_long |NN long* longp +Abp |void |save_list |NN SV** sarg|I32 maxsarg +Abp |void |save_long |NN long* longp Apmb |void |save_mortalizesv|NN SV* sv -Ap |void |save_nogv |NN GV* gv +Abp |void |save_nogv |NN GV* gv : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c Apmb |void |save_op Ap |SV* |save_scalar |NN GV* gv @@ -1331,7 +1509,7 @@ AMpd |OP* |op_scope |NULLOK OP* o : Only used by perl.c/miniperl.c, but defined in caretx.c px |void |set_caret_X Apd |void |setdefout |NN GV* gv -Ap |HEK* |share_hek |NN const char* str|I32 len|U32 hash +Ap |HEK* |share_hek |NN const char* str|SSize_t len|U32 hash #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) : Used in perl.c np |Signal_t |sighandler |int sig|NULLOK siginfo_t *info|NULLOK void *uap @@ -1342,9 +1520,10 @@ Anp |Signal_t |csighandler |int sig #endif Ap |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n Ap |I32 |start_subparse |I32 is_format|U32 flags +Xp |void |init_named_cv |NN CV *cv|NN OP *nameop : Used in pp_ctl.c p |void |sub_crush_depth|NN CV* cv -Amd |bool |sv_2bool |NN SV *const sv +Apbmd |bool |sv_2bool |NN SV *const sv Apd |bool |sv_2bool_flags |NN SV *sv|I32 flags Apd |CV* |sv_2cv |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \ |const I32 lref @@ -1352,25 +1531,25 @@ Apd |IO* |sv_2io |NN SV *const sv #if defined(PERL_IN_SV_C) s |bool |glob_2number |NN GV* const gv #endif -Amb |IV |sv_2iv |NN SV *sv +Apmb |IV |sv_2iv |NN SV *sv Apd |IV |sv_2iv_flags |NN SV *const sv|const I32 flags Apd |SV* |sv_2mortal |NULLOK SV *const sv Apd |NV |sv_2nv_flags |NN SV *const sv|const I32 flags : Used in pp.c, pp_hot.c, sv.c pMd |SV* |sv_2num |NN SV *const sv -Amb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp +Apmb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp Apd |char* |sv_2pv_flags |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags Apd |char* |sv_2pvutf8 |NN SV *sv|NULLOK STRLEN *const lp Apd |char* |sv_2pvbyte |NN SV *sv|NULLOK STRLEN *const lp -Ap |char* |sv_pvn_nomg |NN SV* sv|NULLOK STRLEN* lp -Amb |UV |sv_2uv |NN SV *sv +Abp |char* |sv_pvn_nomg |NN SV* sv|NULLOK STRLEN* lp +Apmb |UV |sv_2uv |NN SV *sv Apd |UV |sv_2uv_flags |NN SV *const sv|const I32 flags -Apd |IV |sv_iv |NN SV* sv -Apd |UV |sv_uv |NN SV* sv -Apd |NV |sv_nv |NN SV* sv -Apd |char* |sv_pvn |NN SV *sv|NN STRLEN *lp -Apd |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp -Apd |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp +Abpd |IV |sv_iv |NN SV* sv +Abpd |UV |sv_uv |NN SV* sv +Abpd |NV |sv_nv |NN SV* sv +Abpd |char* |sv_pvn |NN SV *sv|NN STRLEN *lp +Abpd |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp +Abpd |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp Apd |I32 |sv_true |NULLOK SV *const sv #if defined(PERL_IN_SV_C) sd |void |sv_add_arena |NN char *const ptr|const U32 size \ @@ -1388,8 +1567,8 @@ Afpd |void |sv_catpvf |NN SV *const sv|NN const char *const pat|... Apd |void |sv_vcatpvf |NN SV *const sv|NN const char *const pat \ |NULLOK va_list *const args Apd |void |sv_catpv |NN SV *const sv|NULLOK const char* ptr -Amdb |void |sv_catpvn |NN SV *dsv|NN const char *sstr|STRLEN len -Amdb |void |sv_catsv |NN SV *dstr|NULLOK SV *sstr +Apmdb |void |sv_catpvn |NN SV *dsv|NN const char *sstr|STRLEN len +Apmdb |void |sv_catsv |NN SV *dstr|NULLOK SV *sstr Apd |void |sv_chop |NN SV *const sv|NULLOK const char *const ptr : Used only in perl.c pd |I32 |sv_clean_all @@ -1406,13 +1585,13 @@ Aopd |I32 |sv_cmp_locale |NULLOK SV *const sv1|NULLOK SV *const sv2 Apd |I32 |sv_cmp_locale_flags |NULLOK SV *const sv1 \ |NULLOK SV *const sv2|const U32 flags #if defined(USE_LOCALE_COLLATE) -Amd |char* |sv_collxfrm |NN SV *const sv|NN STRLEN *const nxp +Apbmd |char* |sv_collxfrm |NN SV *const sv|NN STRLEN *const nxp Apd |char* |sv_collxfrm_flags |NN SV *const sv|NN STRLEN *const nxp|I32 const flags #endif Apd |int |getcwd_sv |NN SV* sv Apd |void |sv_dec |NULLOK SV *const sv Apd |void |sv_dec_nomg |NULLOK SV *const sv -Ap |void |sv_dump |NN SV* sv +Ap |void |sv_dump |NULLOK SV* sv ApdR |bool |sv_derived_from|NN SV* sv|NN const char *const name ApdR |bool |sv_derived_from_sv|NN SV* sv|NN SV *namesv|U32 flags ApdR |bool |sv_derived_from_pv|NN SV* sv|NN const char *const name|U32 flags @@ -1423,7 +1602,7 @@ ApdR |bool |sv_does_sv |NN SV* sv|NN SV* namesv|U32 flags ApdR |bool |sv_does_pv |NN SV* sv|NN const char *const name|U32 flags ApdR |bool |sv_does_pvn |NN SV* sv|NN const char *const name|const STRLEN len \ |U32 flags -Amd |I32 |sv_eq |NULLOK SV* sv1|NULLOK SV* sv2 +Apbmd |I32 |sv_eq |NULLOK SV* sv1|NULLOK SV* sv2 Apd |I32 |sv_eq_flags |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags Apd |void |sv_free |NULLOK SV *const sv poMX |void |sv_free2 |NN SV *const sv|const U32 refcnt @@ -1433,11 +1612,11 @@ Apd |char* |sv_gets |NN SV *const sv|NN PerlIO *const fp|I32 append Apd |char* |sv_grow |NN SV *const sv|STRLEN newlen Apd |void |sv_inc |NULLOK SV *const sv Apd |void |sv_inc_nomg |NULLOK SV *const sv -Amdb |void |sv_insert |NN SV *const bigstr|const STRLEN offset \ +Apmdb |void |sv_insert |NN SV *const bigstr|const STRLEN offset \ |const STRLEN len|NN const char *const little \ |const STRLEN littlelen Apd |void |sv_insert_flags|NN SV *const bigstr|const STRLEN offset|const STRLEN len \ - |NN const char *const little|const STRLEN littlelen|const U32 flags + |NN const char *little|const STRLEN littlelen|const U32 flags Apd |int |sv_isa |NULLOK SV* sv|NN const char *const name Apd |int |sv_isobject |NULLOK SV* sv Apd |STRLEN |sv_len |NULLOK SV *const sv @@ -1448,13 +1627,11 @@ Apd |void |sv_magic |NN SV *const sv|NULLOK SV *const obj|const int how \ Apd |MAGIC *|sv_magicext |NN SV *const sv|NULLOK SV *const obj|const int how \ |NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \ |const I32 namlen -#ifndef PERL_NO_INLINE_FUNCTIONS Ein |bool |sv_only_taint_gmagic|NN SV *sv -#endif : exported for re.pm EXp |MAGIC *|sv_magicext_mglob|NN SV *sv -ApdbamR |SV* |sv_mortalcopy |NULLOK SV *const oldsv -XpaR |SV* |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags +ApdbmR |SV* |sv_mortalcopy |NULLOK SV *const oldsv +XpR |SV* |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags ApdR |SV* |sv_newmortal Apd |SV* |sv_newref |NULLOK SV *const sv Ap |char* |sv_peek |NULLOK SV* sv @@ -1464,7 +1641,7 @@ Apd |STRLEN |sv_pos_u2b_flags|NN SV *const sv|STRLEN uoffset \ Apd |void |sv_pos_b2u |NULLOK SV *const sv|NN I32 *const offsetp Apd |STRLEN |sv_pos_b2u_flags|NN SV *const sv|STRLEN const offset \ |U32 flags -Amdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp +Apmdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp Apd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp Apd |char* |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp Apd |char* |sv_recode_to_utf8 |NN SV* sv|NN SV *encoding @@ -1492,9 +1669,10 @@ Apd |SV* |sv_setref_pvn |NN SV *const rv|NULLOK const char *const classname \ |NN const char *const pv|const STRLEN n Apd |void |sv_setpv |NN SV *const sv|NULLOK const char *const ptr Apd |void |sv_setpvn |NN SV *const sv|NULLOK const char *const ptr|const STRLEN len +Apd |char *|sv_setpv_bufsize|NN SV *const sv|const STRLEN cur|const STRLEN len Xp |void |sv_sethek |NN SV *const sv|NULLOK const HEK *const hek -Amdb |void |sv_setsv |NN SV *dstr|NULLOK SV *sstr -Amdb |void |sv_taint |NN SV* sv +Apmdb |void |sv_setsv |NN SV *dstr|NULLOK SV *sstr +Apmdb |void |sv_taint |NN SV* sv ApdR |bool |sv_tainted |NN SV *const sv Apd |int |sv_unmagic |NN SV *const sv|const int type Apd |int |sv_unmagicext |NN SV *const sv|const int type|NULLOK MGVTBL *vtbl @@ -1506,34 +1684,34 @@ Apdmb |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len Apd |void |sv_usepvn_flags|NN SV *const sv|NULLOK char* ptr|const STRLEN len\ |const U32 flags Apd |void |sv_vcatpvfn |NN SV *const sv|NN const char *const pat|const STRLEN patlen \ - |NULLOK va_list *const args|NULLOK SV **const svargs|const I32 svmax \ + |NULLOK va_list *const args|NULLOK SV **const svargs|const Size_t sv_count \ |NULLOK bool *const maybe_tainted Apd |void |sv_vcatpvfn_flags|NN SV *const sv|NN const char *const pat|const STRLEN patlen \ - |NULLOK va_list *const args|NULLOK SV **const svargs|const I32 svmax \ + |NULLOK va_list *const args|NULLOK SV **const svargs|const Size_t sv_count \ |NULLOK bool *const maybe_tainted|const U32 flags Apd |void |sv_vsetpvfn |NN SV *const sv|NN const char *const pat|const STRLEN patlen \ |NULLOK va_list *const args|NULLOK SV **const svargs \ - |const I32 svmax|NULLOK bool *const maybe_tainted + |const Size_t sv_count|NULLOK bool *const maybe_tainted ApR |NV |str_to_version |NN SV *sv -ApRM |SV* |swash_init |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none -ApM |UV |swash_fetch |NN SV *swash|NN const U8 *ptr|bool do_utf8 +EXpRM |SV* |swash_init |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none +EXpM |UV |swash_fetch |NN SV *swash|NN const U8 *ptr|bool do_utf8 #ifdef PERL_IN_REGCOMP_C EiMR |SV* |add_cp_to_invlist |NULLOK SV* invlist|const UV cp -EsM |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end -EiMRn |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0 -EsM |void |invlist_extend |NN SV* const invlist|const UV len -EiMRn |UV |invlist_max |NN SV* const invlist -EiM |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset EiMRn |bool |invlist_is_iterating|NN SV* const invlist #ifndef PERL_EXT_RE_BUILD +EiMRn |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0 +EiMRn |UV |invlist_max |NN SV* const invlist +EsM |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end +EsM |void |invlist_extend |NN SV* const invlist|const UV len EsM |void |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src EiMRn |IV* |get_invlist_previous_index_addr|NN SV* invlist +EiM |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset EiMn |void |invlist_set_previous_index|NN SV* const invlist|const IV index EiMRn |IV |invlist_previous_index|NN SV* const invlist EiMn |void |invlist_trim |NN SV* invlist EiM |void |invlist_clear |NN SV* invlist +sM |void |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size #endif -EiMR |SV* |invlist_clone |NN SV* const invlist EiMRn |STRLEN*|get_invlist_iter_addr |NN SV* invlist EiMn |void |invlist_iterinit|NN SV* invlist EsMRn |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end @@ -1543,6 +1721,7 @@ EMRs |SV* |_make_exactf_invlist |NN RExC_state_t *pRExC_state \ |NN regnode *node EsMR |SV* |invlist_contents|NN SV* const invlist \ |const bool traditional_style +EsRn |bool |new_regcurly |NN const char *s|NN const char *e #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) EXmM |void |_invlist_intersection |NN SV* const a|NN SV* const b|NN SV** i @@ -1556,34 +1735,28 @@ EXpM |void |_invlist_union_maybe_complement_2nd \ EXmM |void |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result EXpM |void |_invlist_invert|NN SV* const invlist EXMpR |SV* |_new_invlist |IV initial_size -EXMpR |SV* |_swash_to_invlist |NN SV* const swash -EXMpR |SV* |_add_range_to_invlist |NULLOK SV* invlist|const UV start|const UV end +EXMpR |SV* |_add_range_to_invlist |NULLOK SV* invlist|UV start|UV end EXMpR |SV* |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr -EXMpn |void |_invlist_populate_swatch |NN SV* const invlist|const UV start|const UV end|NN U8* swatch #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_TOKE_C) -EXp |SV* |_core_swash_init|NN const char* pkg|NN const char* name \ - |NN SV* listsv|I32 minbits|I32 none \ - |NULLOK SV* invlist|NULLOK U8* const flags_p +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C) +EMpX |SV* |invlist_clone |NN SV* const invlist|NULLOK SV* newlist #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) EiMRn |UV* |invlist_array |NN SV* const invlist +EiMRn |bool |is_invlist |NULLOK SV* const invlist EiMRn |bool* |get_invlist_offset_addr|NN SV* invlist EiMRn |UV |_invlist_len |NN SV* const invlist EMiRn |bool |_invlist_contains_cp|NN SV* const invlist|const UV cp -EXpMRn |IV |_invlist_search |NN SV* const invlist|const UV cp -EXMpR |SV* |_get_swash_invlist|NN SV* const swash -EXMpR |HV* |_swash_inversion_hash |NN SV* const swash +EXpMRn |SSize_t|_invlist_search |NN SV* const invlist|const UV cp #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -ApM |SV* |_get_regclass_nonbitmap_data \ +EXpM |SV* |_get_regclass_nonbitmap_data \ |NULLOK const regexp *prog \ |NN const struct regnode *node \ |bool doinit \ |NULLOK SV **listsvp \ |NULLOK SV **lonly_utf8_locale \ |NULLOK SV **output_invlist -EXp |void|_load_PL_utf8_foldclosures| #endif #if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) EXMp |void |_invlist_dump |NN PerlIO *file|I32 level \ @@ -1592,33 +1765,64 @@ EXMp |void |_invlist_dump |NN PerlIO *file|I32 level \ #endif Ap |void |taint_env Ap |void |taint_proper |NULLOK const char* f|NN const char *const s -ApdD |UV |to_utf8_case |NN const U8 *p \ - |NN U8* ustrp \ - |NULLOK STRLEN *lenp \ - |NN SV **swashp \ - |NN const char *normal| \ - NULLOK const char *special +EpM |char * |_byte_dump_string \ + |NN const U8 * const start \ + |const STRLEN len \ + |const bool format #if defined(PERL_IN_UTF8_C) +inR |int |does_utf8_overflow|NN const U8 * const s \ + |NN const U8 * e \ + |const bool consider_overlongs +inR |int |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s \ + |const STRLEN len +inR |int |isFF_OVERLONG |NN const U8 * const s|const STRLEN len +sMR |char * |unexpected_non_continuation_text \ + |NN const U8 * const s \ + |STRLEN print_len \ + |const STRLEN non_cont_byte_pos \ + |const STRLEN expect_len +s |void |warn_on_first_deprecated_use \ + |NN const char * const name \ + |NN const char * const alternative \ + |const bool use_locale \ + |NN const char * const file \ + |const unsigned line +s |U32 |check_and_deprecate \ + |NN const U8 * p \ + |NN const U8 ** e \ + |const unsigned type \ + |const bool use_locale \ + |NN const char * const file \ + |const unsigned line s |UV |_to_utf8_case |const UV uv1 \ - |NN const U8 *p \ + |NULLOK const U8 *p \ |NN U8* ustrp \ - |NULLOK STRLEN *lenp \ - |NN SV **swashp \ - |NN const char *normal \ - |NULLOK const char *special -#endif -Abmd |UV |to_utf8_lower |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_lower_flags |NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|bool flags -Abmd |UV |to_utf8_upper |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_upper_flags |NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|bool flags -Abmd |UV |to_utf8_title |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_title_flags |NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|bool flags -Abmd |UV |to_utf8_fold |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_fold_flags|NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|U8 flags + |NN STRLEN *lenp \ + |NN SV *invlist \ + |NN const int * const invmap \ + |NULLOK const unsigned int * const * const aux_tables \ + |NULLOK const U8 * const aux_table_lengths \ + |NN const char * const normal +s |UV |turkic_fc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp +s |UV |turkic_lc |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp +s |UV |turkic_uc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp +#endif +ApbmdD |UV |to_utf8_lower |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp +AMp |UV |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags \ + |NN const char * const file|const int line +ApbmdD |UV |to_utf8_upper |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp +AMp |UV |_to_utf8_upper_flags |NN const U8 *p|NULLOK const U8 *e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags \ + |NN const char * const file|const int line +ApbmdD |UV |to_utf8_title |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp +AMp |UV |_to_utf8_title_flags |NN const U8 *p|NULLOK const U8* e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags \ + |NN const char * const file|const int line +ApbmdD |UV |to_utf8_fold |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp +AMp |UV |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e \ + |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags \ + |NN const char * const file|const int line #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C) pn |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \ |bool pos1_is_uv|IV len_iv \ @@ -1628,45 +1832,80 @@ pn |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \ #if defined(UNLINK_ALL_VERSIONS) Ap |I32 |unlnk |NN const char* f #endif -Apd |I32 |unpack_str |NN const char *pat|NN const char *patend|NN const char *s \ +Abpd |SSize_t|unpack_str |NN const char *pat|NN const char *patend|NN const char *s \ |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \ |I32 ocnt|U32 flags -Apd |I32 |unpackstring |NN const char *pat|NN const char *patend|NN const char *s \ +Apd |SSize_t|unpackstring |NN const char *pat|NN const char *patend|NN const char *s \ |NN const char *strend|U32 flags Ap |void |unsharepvn |NULLOK const char* sv|I32 len|U32 hash : Used in gv.c, hv.c p |void |unshare_hek |NULLOK HEK* hek : Used in perly.y p |void |utilize |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg -Ap |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen -Ap |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen -AdpPR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e -ApdPR |IV |utf8_distance |NN const U8 *a|NN const U8 *b -ApdPRn |U8* |utf8_hop |NN const U8 *s|SSize_t off -ApMd |U8* |utf8_to_bytes |NN U8 *s|NN STRLEN *len +ApM |void |_force_out_malformed_utf8_message \ + |NN const U8 *const p|NN const U8 * const e|const U32 flags \ + |const bool die_here +EXp |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen +EXp |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen +AdpR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e +AipdR |IV |utf8_distance |NN const U8 *a|NN const U8 *b +AipdRn |U8* |utf8_hop |NN const U8 *s|SSize_t off +AipdRn |U8* |utf8_hop_back|NN const U8 *s|SSize_t off|NN const U8 *start +AipdRn |U8* |utf8_hop_forward|NN const U8 *s|SSize_t off|NN const U8 *end +AipdRn |U8* |utf8_hop_safe |NN const U8 *s|SSize_t off|NN const U8 *start|NN const U8 *end +ApMd |U8* |utf8_to_bytes |NN U8 *s|NN STRLEN *lenp Apd |int |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \ |STRLEN ulen -ApMd |U8* |bytes_from_utf8|NN const U8 *s|NN STRLEN *len|NULLOK bool *is_utf8 -ApMd |U8* |bytes_to_utf8 |NN const U8 *s|NN STRLEN *len +AModp |U8* |bytes_from_utf8|NN const U8 *s|NN STRLEN *lenp|NN bool *is_utf8p +AMnp |U8* |bytes_from_utf8_loc|NN const U8 *s \ + |NN STRLEN *lenp \ + |NN bool *is_utf8p \ + |NULLOK const U8 ** first_unconverted +ApMd |U8* |bytes_to_utf8 |NN const U8 *s|NN STRLEN *lenp ApdD |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen -ApdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen -ApMD |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen -Amd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen +AbpdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen +AbpMD |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen +Aopd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen ApdD |UV |utf8_to_uvuni_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen pM |bool |check_utf8_print |NN const U8 *s|const STRLEN len -Adp |UV |utf8n_to_uvchr |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags -ApM |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen - +Adnop |UV |utf8n_to_uvchr |NN const U8 *s \ + |STRLEN curlen \ + |NULLOK STRLEN *retlen \ + |const U32 flags +Adnop |UV |utf8n_to_uvchr_error|NN const U8 *s \ + |STRLEN curlen \ + |NULLOK STRLEN *retlen \ + |const U32 flags \ + |NULLOK U32 * errors +AMndi |UV |utf8n_to_uvchr_msgs|NN const U8 *s \ + |STRLEN curlen \ + |NULLOK STRLEN *retlen \ + |const U32 flags \ + |NULLOK U32 * errors \ + |NULLOK AV ** msgs +AMnp |UV |_utf8n_to_uvchr_msgs_helper \ + |NN const U8 *s \ + |STRLEN curlen \ + |NULLOK STRLEN *retlen \ + |const U32 flags \ + |NULLOK U32 * errors \ + |NULLOK AV ** msgs +AipnR |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen Ap |UV |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags Adm |U8* |uvchr_to_utf8 |NN U8 *d|UV uv Ap |U8* |uvuni_to_utf8 |NN U8 *d|UV uv Adm |U8* |uvchr_to_utf8_flags |NN U8 *d|UV uv|UV flags -Apd |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|UV flags +AdmM |U8* |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs +Apod |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags +ApM |U8* |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs Ap |U8* |uvuni_to_utf8_flags |NN U8 *d|UV uv|UV flags Apd |char* |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags ApdR |char* |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags +EXpR |Size_t |_inverse_folds |const UV cp \ + |NN unsigned int * first_folds_to \ + |NN const unsigned int ** remaining_folds_to : Used by Data::Alias EXp |void |vivify_defelem |NN SV* sv : Used in pp.c @@ -1679,7 +1918,7 @@ Ap |U32 |seed Xpno |double |drand48_r |NN perl_drand48_t *random_state Xpno |void |drand48_init_r |NN perl_drand48_t *random_state|U32 seed : Only used in perl.c -p |void |get_hash_seed |NN unsigned char * const seed_buffer +p |void |get_hash_seed |NN unsigned char * const seed_buffer : Used in doio.c, pp_hot.c, pp_sys.c p |void |report_evil_fh |NULLOK const GV *gv : Used in doio.c, pp_hot.c, pp_sys.c @@ -1707,13 +1946,11 @@ Apd |bool |dump_c_backtrace|NN PerlIO* fp|int max_depth|int skip : FIXME p |void |watch |NN char** addr Am |I32 |whichsig |NN const char* sig -Ap |I32 |whichsig_sv |NN SV* sigsv -Ap |I32 |whichsig_pv |NN const char* sig -Ap |I32 |whichsig_pvn |NN const char* sig|STRLEN len -#ifndef PERL_NO_INLINE_FUNCTIONS +Ap |I32 |whichsig_sv |NN SV* sigsv +Ap |I32 |whichsig_pv |NN const char* sig +Ap |I32 |whichsig_pvn |NN const char* sig|STRLEN len : used to check for NULs in pathnames and other names AiR |bool |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name -#endif #ifdef PERL_CORE inR |bool |should_warn_nl|NN const char *pv #endif @@ -1721,8 +1958,10 @@ inR |bool |should_warn_nl|NN const char *pv p |void |write_to_stderr|NN SV* msv : Used in op.c p |int |yyerror |NN const char *const s +p |void |yyquit +pr |void |abort_execution|NN const char * const msg|NN const char * const name p |int |yyerror_pv |NN const char *const s|U32 flags -p |int |yyerror_pvn |NN const char *const s|STRLEN len|U32 flags +p |int |yyerror_pvn |NULLOK const char *const s|STRLEN len|U32 flags : Used in perly.y, and by Data::Alias EXp |int |yylex p |void |yyunlex @@ -1743,7 +1982,7 @@ Ap |int |get_mstats |NN perl_mstats_t *buf|int buflen|int level #endif Anpa |Malloc_t|safesysmalloc |MEM_SIZE nbytes Anpa |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size -Anpa |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes +AnpR |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes Anp |Free_t |safesysfree |Malloc_t where Asrnx |void |croak_memory_wrap #if defined(PERL_GLOBAL_STRUCT) @@ -1777,7 +2016,7 @@ Apd |char* |pv_escape |NULLOK SV *dsv|NN char const * const str\ |const STRLEN count|const STRLEN max\ |NULLOK STRLEN * const escaped\ |const U32 flags -Apd |char* |pv_pretty |NN SV *dsv|NN char const * const str\ +Apd |char* |pv_pretty |NN SV *dsv|NN char const * const str\ |const STRLEN count|const STRLEN max\ |NULLOK char const * const start_color\ |NULLOK char const * const end_color\ @@ -1802,24 +2041,25 @@ Ap |void |reginitcolors ApdRmb |char* |sv_2pv_nolen |NN SV* sv ApdRmb |char* |sv_2pvutf8_nolen|NN SV* sv ApdRmb |char* |sv_2pvbyte_nolen|NN SV* sv -AmdbR |char* |sv_pv |NN SV *sv -AmdbR |char* |sv_pvutf8 |NN SV *sv -AmdbR |char* |sv_pvbyte |NN SV *sv -Amdb |STRLEN |sv_utf8_upgrade|NN SV *sv +ApmdbR |char* |sv_pv |NN SV *sv +ApmdbR |char* |sv_pvutf8 |NN SV *sv +ApmdbR |char* |sv_pvbyte |NN SV *sv +Apmdb |STRLEN |sv_utf8_upgrade|NN SV *sv Amd |STRLEN |sv_utf8_upgrade_nomg|NN SV *sv -ApdM |bool |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok +Apd |bool |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok Apd |void |sv_utf8_encode |NN SV *const sv -ApdM |bool |sv_utf8_decode |NN SV *const sv +Apd |bool |sv_utf8_decode |NN SV *const sv Apdmb |void |sv_force_normal|NN SV *sv Apd |void |sv_force_normal_flags|NN SV *const sv|const U32 flags pX |SSize_t|tmps_grow_p |SSize_t ix Apd |SV* |sv_rvweaken |NN SV *const sv -AnpPMd |SV* |sv_get_backrefs|NN SV *const sv +Apd |SV* |sv_rvunweaken |NN SV *const sv +AnpMd |SV* |sv_get_backrefs|NN SV *const sv : This is indirectly referenced by globals.c. This is somewhat annoying. p |int |magic_killbackrefs|NN SV *sv|NN MAGIC *mg Ap |OP* |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block Am |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block -pX |CV* |newATTRSUB_x |I32 floor|NULLOK OP *o|NULLOK OP *proto \ +pdX |CV* |newATTRSUB_x |I32 floor|NULLOK OP *o|NULLOK OP *proto \ |NULLOK OP *attrs|NULLOK OP *block \ |bool o_is_gv Ap |CV * |newMYSUB |I32 floor|NN OP *o|NULLOK OP *proto \ @@ -1830,7 +2070,7 @@ p |OP * |my_attrs |NN OP *o|NULLOK OP *attrs #if defined(USE_ITHREADS) ApR |PERL_CONTEXT*|cx_dup |NULLOK PERL_CONTEXT* cx|I32 ix|I32 max|NN CLONE_PARAMS* param ApR |PERL_SI*|si_dup |NULLOK PERL_SI* si|NN CLONE_PARAMS* param -Apa |ANY* |ss_dup |NN PerlInterpreter* proto_perl|NN CLONE_PARAMS* param +ApR |ANY* |ss_dup |NN PerlInterpreter* proto_perl|NN CLONE_PARAMS* param ApR |void* |any_dup |NULLOK void* v|NN const PerlInterpreter* proto_perl ApR |HE* |he_dup |NULLOK const HE* e|bool shared|NN CLONE_PARAMS* param ApR |HEK* |hek_dup |NULLOK HEK* e|NN CLONE_PARAMS* param @@ -1852,7 +2092,7 @@ ApR |SV* |sv_dup_inc |NULLOK const SV *const sstr \ Ap |void |rvpv_dup |NN SV *const dstr|NN const SV *const sstr|NN CLONE_PARAMS *const param Ap |yy_parser*|parser_dup |NULLOK const yy_parser *const proto|NN CLONE_PARAMS *const param #endif -Apa |PTR_TBL_t*|ptr_table_new +ApR |PTR_TBL_t*|ptr_table_new ApR |void* |ptr_table_fetch|NN PTR_TBL_t *const tbl|NULLOK const void *const sv Ap |void |ptr_table_store|NN PTR_TBL_t *const tbl|NULLOK const void *const oldsv \ |NN void *const newsv @@ -1867,9 +2107,9 @@ Ap |void |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern* # endif #endif -AmopP |const XOP * |custom_op_xop |NN const OP *o -ApR |const char * |custom_op_name |NN const OP *o -ApR |const char * |custom_op_desc |NN const OP *o +Amop |const XOP * |custom_op_xop |NN const OP *o +AbpR |const char * |custom_op_name |NN const OP *o +AbpR |const char * |custom_op_desc |NN const OP *o pRX |XOPRETANY |custom_op_get_field |NN const OP *o|const xop_flags_enum field Aop |void |custom_op_register |NN Perl_ppaddr_t ppaddr \ |NN const XOP *xop @@ -1877,41 +2117,38 @@ Aop |void |custom_op_register |NN Perl_ppaddr_t ppaddr \ Adp |void |sv_nosharing |NULLOK SV *sv Adpbm |void |sv_nolocking |NULLOK SV *sv Adp |bool |sv_destroyable |NULLOK SV *sv -#ifdef NO_MATHOMS -Adpbm |void |sv_nounlocking |NULLOK SV *sv -#else Adpb |void |sv_nounlocking |NULLOK SV *sv -#endif Adp |int |nothreadhook p |void |init_constants #if defined(PERL_IN_DOOP_C) -sR |I32 |do_trans_simple |NN SV * const sv -sR |I32 |do_trans_count |NN SV * const sv -sR |I32 |do_trans_complex |NN SV * const sv -sR |I32 |do_trans_simple_utf8 |NN SV * const sv -sR |I32 |do_trans_count_utf8 |NN SV * const sv -sR |I32 |do_trans_complex_utf8 |NN SV * const sv +sR |Size_t |do_trans_simple |NN SV * const sv +sR |Size_t |do_trans_count |NN SV * const sv +sR |Size_t |do_trans_complex |NN SV * const sv +sR |Size_t |do_trans_simple_utf8 |NN SV * const sv +sR |Size_t |do_trans_count_utf8 |NN SV * const sv +sR |Size_t |do_trans_complex_utf8 |NN SV * const sv #endif #if defined(PERL_IN_GV_C) s |void |gv_init_svtype |NN GV *gv|const svtype sv_type s |void |gv_magicalize_isa |NN GV *gv -s |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \ +s |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \ |NN const char **name|NN STRLEN *len \ |NN const char *nambeg|STRLEN full_len \ |const U32 is_utf8|const I32 add -s |bool|find_default_stash|NN HV **stash|NN const char *name \ +s |bool|find_default_stash|NN HV **stash|NN const char *name \ |STRLEN len|const U32 is_utf8|const I32 add \ |const svtype sv_type -s |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \ - |STRLEN len|bool addmg \ +s |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \ + |STRLEN len \ |const svtype sv_type -s |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type -s |bool|gv_is_in_main|NN const char *name|STRLEN len \ +s |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type +s |bool|gv_is_in_main|NN const char *name|STRLEN len \ |const U32 is_utf8 -s |HV* |require_tie_mod|NN GV *gv|NN const char *varpv|NN SV* namesv \ - |NN const char *methpv|const U32 flags +s |void |require_tie_mod|NN GV *gv|NN const char varname \ + |NN const char * name|STRLEN len \ + |const U32 flags #endif #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) @@ -1920,13 +2157,13 @@ po |SV* |hfree_next_entry |NN HV *hv|NN STRLEN *indexp #if defined(PERL_IN_HV_C) s |void |hsplit |NN HV *hv|STRLEN const oldsize|STRLEN newsize -s |void |hv_free_entries |NN HV *hv +s |void |hv_free_entries|NN HV *hv s |SV* |hv_free_ent_ret|NN HV *hv|NN HE *entry -sa |HE* |new_he +sR |HE* |new_he sanR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags sn |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store s |void |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash -sR |HEK* |share_hek_flags|NN const char *str|I32 len|U32 hash|int flags +sR |HEK* |share_hek_flags|NN const char *str|STRLEN len|U32 hash|int flags rs |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg in |U32|ptr_hash|PTRV u s |struct xpvhv_aux*|hv_auxinit|NN HV *hv @@ -1939,7 +2176,7 @@ sM |void |clear_placeholders |NN HV *hv|U32 items #if defined(PERL_IN_MG_C) s |void |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags --s |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth +s |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth s |SV* |magic_methcall1|NN SV *sv|NN const MAGIC *mg \ |NN SV *meth|U32 flags \ |int n|NULLOK SV *val @@ -1982,7 +2219,7 @@ s |bool |process_special_blocks |I32 floor \ s |void |clear_special_blocks |NN const char *const fullname\ |NN GV *const gv|NN CV *const cv #endif -Xpa |void* |Slab_Alloc |size_t sz +XpR |void* |Slab_Alloc |size_t sz Xp |void |Slab_Free |NN void *op #if defined(PERL_DEBUG_READONLY_OPS) # if defined(PERL_CORE) @@ -2038,17 +2275,17 @@ pRxo |GV* |softref2xv |NN SV *const sv|NN const char *const what \ #endif #if defined(PERL_IN_PP_PACK_C) -s |I32 |unpack_rec |NN struct tempsym* symptr|NN const char *s \ +s |SSize_t|unpack_rec |NN struct tempsym* symptr|NN const char *s \ |NN const char *strbeg|NN const char *strend|NULLOK const char **new_s s |SV ** |pack_rec |NN SV *cat|NN struct tempsym* symptr|NN SV **beglist|NN SV **endlist s |SV* |mul128 |NN SV *sv|U8 m -s |I32 |measure_struct |NN struct tempsym* symptr +s |SSize_t|measure_struct |NN struct tempsym* symptr s |bool |next_symbol |NN struct tempsym* symptr sR |SV* |is_an_int |NN const char *s|STRLEN l s |int |div128 |NN SV *pnum|NN bool *done s |const char *|group_end |NN const char *patptr|NN const char *patend \ |char ender -sR |const char *|get_num |NN const char *patptr|NN I32 *lenptr +sR |const char *|get_num |NN const char *patptr|NN SSize_t *lenptr ns |bool |need_utf8 |NN const char *pat|NN const char *patend ns |char |first_symbol |NN const char *pat|NN const char *patend sR |char * |sv_exp_grow |NN SV *sv|STRLEN needed @@ -2057,7 +2294,7 @@ snR |char * |my_bytes_to_utf8|NN const U8 *start|STRLEN len|NN char *dest \ #endif #if defined(PERL_IN_PP_CTL_C) -sR |OP* |docatch |NULLOK OP *o +sR |OP* |docatch |Perl_ppaddr_t firstpp sR |OP* |dofindlabel |NN OP *o|NN const char *label|STRLEN len \ |U32 flags|NN OP **opstack|NN OP **oplimit s |MAGIC *|doparseform |NN SV *sv @@ -2101,7 +2338,6 @@ s |I32 |amagic_cmp_locale|NN SV *const str1|NN SV *const str2 s |I32 |sortcv |NN SV *const a|NN SV *const b s |I32 |sortcv_xsub |NN SV *const a|NN SV *const b s |I32 |sortcv_stacked |NN SV *const a|NN SV *const b -s |void |qsortsvu |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t compare #endif #if defined(PERL_IN_PP_SYS_C) @@ -2109,7 +2345,7 @@ s |OP* |doform |NN CV *cv|NN GV *gv|NULLOK OP *retop # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) sR |int |dooneliner |NN const char *cmd|NN const char *filename # endif -s |SV * |space_join_names_mortal|NN char *const *array +s |SV * |space_join_names_mortal|NULLOK char *const *array #endif p |OP * |tied_method|NN SV *methname|NN SV **sp \ |NN SV *const sv|NN const MAGIC *const mg \ @@ -2121,72 +2357,77 @@ Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o|NULLO Ep |int |re_printf |NN const char *fmt|... #endif #if defined(PERL_IN_REGCOMP_C) -Es |regnode*|reg |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|reg |NN RExC_state_t *pRExC_state \ |I32 paren|NN I32 *flagp|U32 depth -Es |regnode*|regnode_guts |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state \ |const U8 op \ |const STRLEN extra_len \ |NN const char* const name -Es |regnode*|reganode |NN RExC_state_t *pRExC_state|U8 op \ +Es |void |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size +Es |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \ |U32 arg -Es |regnode*|reg2Lanode |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state \ |const U8 op \ |const U32 arg1 \ |const I32 arg2 -Es |regnode*|regatom |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|regatom |NN RExC_state_t *pRExC_state \ |NN I32 *flagp|U32 depth -Es |regnode*|regbranch |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|regbranch |NN RExC_state_t *pRExC_state \ |NN I32 *flagp|I32 first|U32 depth Es |void |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \ |NN regnode* const node \ |NULLOK SV* const cp_list \ - |NULLOK SV* const runtime_defns \ - |NULLOK SV* const only_utf8_locale_list \ - |NULLOK SV* const swash \ - |const bool has_user_defined_property -Es |void |output_or_return_posix_warnings \ + |NULLOK SV* const runtime_defns \ + |NULLOK SV* const only_utf8_locale_list +Es |void |output_posix_warnings \ |NN RExC_state_t *pRExC_state \ - |NN AV* posix_warnings \ - |NULLOK AV** return_posix_warnings + |NN AV* posix_warnings Es |AV* |add_multi_match|NULLOK AV* multi_char_matches \ |NN SV* multi_string \ |const STRLEN cp_count -Es |regnode*|regclass |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|regclass|NN RExC_state_t *pRExC_state \ |NN I32 *flagp|U32 depth|const bool stop_at_1 \ |bool allow_multi_fold \ |const bool silence_non_portable \ |const bool strict \ |bool optimizable \ - |NULLOK SV** ret_invlist \ - |NULLOK AV** return_posix_warnings + |NULLOK SV** ret_invlist Es |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \ |NN SV** invlist -Ei |regnode*|handle_named_backref|NN RExC_state_t *pRExC_state \ +Ei |regnode_offset|handle_named_backref|NN RExC_state_t *pRExC_state \ |NN I32 *flagp \ |NN char * parse_start \ |char ch -EsnP |unsigned int|regex_set_precedence|const U8 my_operator -Es |regnode*|handle_regex_sets|NN RExC_state_t *pRExC_state \ +EsnR |unsigned int|regex_set_precedence|const U8 my_operator +Es |regnode_offset|handle_regex_sets|NN RExC_state_t *pRExC_state \ |NULLOK SV ** return_invlist \ |NN I32 *flagp|U32 depth \ |NN char * const oregcomp_parse +Es |void |set_regex_pv |NN RExC_state_t *pRExC_state|NN REGEXP *Rx +#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING) +Es |void |dump_regex_sets_structures \ + |NN RExC_state_t *pRExC_state \ + |NN AV * stack \ + |const IV fence|NN AV * fence_stack +#endif Es |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state -Es |regnode*|reg_node |NN RExC_state_t *pRExC_state|U8 op -Es |UV |reg_recode |const U8 value|NN SV **encp -Es |regnode*|regpiece |NN RExC_state_t *pRExC_state \ +Es |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op +Es |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \ |NN I32 *flagp|U32 depth Es |bool |grok_bslash_N |NN RExC_state_t *pRExC_state \ - |NULLOK regnode** nodep \ + |NULLOK regnode_offset* nodep \ |NULLOK UV *code_point_p \ |NULLOK int* cp_count \ |NN I32 *flagp \ |const bool strict \ |const U32 depth Es |void |reginsert |NN RExC_state_t *pRExC_state \ - |U8 op|NN regnode *opnd|U32 depth -Es |void |regtail |NN RExC_state_t * pRExC_state \ - |NN const regnode * const p \ - |NN const regnode * const val \ + |const U8 op \ + |const regnode_offset operand \ + |const U32 depth +Es |bool |regtail |NN RExC_state_t * pRExC_state \ + |NN const regnode_offset p \ + |NN const regnode_offset val \ |const U32 depth Es |SV * |reg_scan_name |NN RExC_state_t *pRExC_state \ |U32 flags @@ -2194,9 +2435,6 @@ Es |U32 |join_exact |NN RExC_state_t *pRExC_state \ |NN regnode *scan|NN UV *min_subtract \ |NN bool *unfolded_multi_char \ |U32 flags|NULLOK regnode *val|U32 depth -Ei |void |alloc_maybe_populate_EXACT|NN RExC_state_t *pRExC_state \ - |NN regnode *node|NN I32 *flagp|STRLEN len \ - |UV code_point|bool downgradable Ein |U8 |compute_EXACTish|NN RExC_state_t *pRExC_state Es |void |nextchar |NN RExC_state_t *pRExC_state Es |void |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state \ @@ -2243,6 +2481,7 @@ Es |SSize_t|study_chunk |NN RExC_state_t *pRExC_state \ |I32 stopparen|U32 recursed_depth \ |NULLOK regnode_ssc *and_withp \ |U32 flags|U32 depth +EsR |SV * |get_ANYOFM_contents|NN const regnode * n EsRn |U32 |add_data |NN RExC_state_t* const pRExC_state \ |NN const char* const s|const U32 n rs |void |re_croak2 |bool utf8|NN const char* pat1|NN const char* pat2|... @@ -2258,15 +2497,34 @@ Es |I32 |make_trie |NN RExC_state_t *pRExC_state \ |U32 word_count|U32 flags|U32 depth Es |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \ |NN regnode *source|U32 depth -EnPs |const char *|cntrl_to_mnemonic|const U8 c -EnPs |int |edit_distance |NN const UV *src \ +EnsR |const char *|cntrl_to_mnemonic|const U8 c +EnsR |int |edit_distance |NN const UV *src \ |NN const UV *tgt \ |const STRLEN x \ |const STRLEN y \ |const SSize_t maxDistance +EpX |SV * |parse_uniprop_string|NN const char * const name \ + |const Size_t name_len \ + |const bool is_utf8 \ + |const bool to_fold \ + |const bool runtime \ + |const bool deferrable \ + |NN bool * user_defined_ptr \ + |NN SV * msg \ + |const STRLEN level +EXp |SV * |handle_user_defined_property|NN const char * name \ + |const STRLEN name_len \ + |const bool is_utf8 \ + |const bool to_fold \ + |const bool runtime \ + |const bool deferrable \ + |NN SV* contents \ + |NN bool *user_defined_ptr \ + |NN SV * msg \ + |const STRLEN level # ifdef DEBUGGING Ep |int |re_indentf |NN const char *fmt|U32 depth|... -Es |void |regdump_intflags|NULLOK const char *lead| const U32 flags +Es |void |regdump_intflags|NULLOK const char *lead| const U32 flags Es |void |regdump_extflags|NULLOK const char *lead| const U32 flags Es |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \ |NN const regnode *node \ @@ -2275,10 +2533,11 @@ Es |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \ |NN SV* sv|I32 indent|U32 depth Es |void |put_code_point |NN SV* sv|UV c Es |bool |put_charclass_bitmap_innards|NN SV* sv \ - |NN char* bitmap \ + |NULLOK char* bitmap \ |NULLOK SV* nonbitmap_invlist \ |NULLOK SV* only_utf8_locale_invlist\ - |NULLOK const regnode * const node + |NULLOK const regnode * const node \ + |const bool force_as_is_display Es |SV* |put_charclass_bitmap_innards_common \ |NN SV* invlist \ |NULLOK SV* posixes \ @@ -2300,34 +2559,47 @@ Es |void |dump_trie_interim_list|NN const struct _reg_trie_data *trie\ Es |void |dump_trie_interim_table|NN const struct _reg_trie_data *trie\ |NULLOK HV* widecharmap|NN AV *revcharmap\ |U32 next_alloc|U32 depth -Es |U8 |regtail_study |NN RExC_state_t *pRExC_state \ - |NN regnode *p|NN const regnode *val|U32 depth +Es |bool |regtail_study |NN RExC_state_t *pRExC_state \ + |NN regnode_offset p|NN const regnode_offset val|U32 depth # endif #endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +EXRpM |bool |isFOO_lc |const U8 classnum|const U8 character +#endif + +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) +ERp |bool |_is_grapheme |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp +#endif + #if defined(PERL_IN_REGEXEC_C) -ERs |bool |isFOO_lc |const U8 classnum|const U8 character -ERs |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character +ERs |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character|NN const U8* e +ERns |U8 * |find_next_masked|NN U8 * s \ + |NN const U8 * send \ + |const U8 byte|const U8 mask +ERns |U8 *|find_span_end |NN U8* s|NN const U8 * send|const U8 span_byte +ERns |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send \ + |const U8 span_byte|const U8 mask ERs |SSize_t|regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog -ERs |I32 |regrepeat |NN regexp *prog|NN char **startposp \ +WERs |I32 |regrepeat |NN regexp *prog|NN char **startposp \ |NN const regnode *p \ + |NN char *loceol \ |NN regmatch_info *const reginfo \ - |I32 max \ - |int depth + |I32 max ERs |bool |regtry |NN regmatch_info *reginfo|NN char **startposp ERs |bool |reginclass |NULLOK regexp * const prog \ |NN const regnode * const n \ |NN const U8 * const p \ |NN const U8 * const p_end \ |bool const utf8_target -Es |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\ +WEs |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\ |U32 maxopenparen -Es |void |regcppop |NN regexp *rex\ - |NN U32 *maxopenparen_p +WEs |void |regcppop |NN regexp *rex|NN U32 *maxopenparen_p +WEs |void |regcp_restore |NN regexp *rex|I32 ix|NN U32 *maxopenparen_p ERsn |U8* |reghop3 |NN U8 *s|SSize_t off|NN const U8 *lim ERsn |U8* |reghop4 |NN U8 *s|SSize_t off|NN const U8 *llim \ |NN const U8 *rlim -ERsn |U8* |reghopmaybe3 |NN U8 *s|SSize_t off|NN const U8 *lim +ERsn |U8* |reghopmaybe3 |NN U8 *s|SSize_t off|NN const U8 * const lim ERs |char* |find_byclass |NN regexp * prog|NN const regnode *c \ |NN char *s|NN const char *strend \ |NULLOK regmatch_info *reginfo @@ -2335,7 +2607,14 @@ Es |void |to_utf8_substr |NN regexp * prog Es |bool |to_byte_substr |NN regexp * prog ERsn |I32 |reg_check_named_buff_matched |NN const regexp *rex \ |NN const regnode *scan -EinR |bool |isGCB |const GCB_enum before|const GCB_enum after +EsR |bool |isGCB |const GCB_enum before \ + |const GCB_enum after \ + |NN const U8 * const strbeg \ + |NN const U8 * const curpos \ + |const bool utf8_target +EsR |GCB_enum|backup_one_GCB|NN const U8 * const strbeg \ + |NN U8 ** curpos \ + |const bool utf8_target EsR |bool |isLB |LB_enum before \ |LB_enum after \ |NN const U8 * const strbeg \ @@ -2375,6 +2654,7 @@ EsR |WB_enum|backup_one_WB |NN WB_enum * previous \ |NN const U8 * const strbeg \ |NN U8 ** curpos \ |const bool utf8_target +Ein |I32 |foldEQ_latin1_s2_folded|NN const char* a|NN const char* b|I32 len # ifdef DEBUGGING Es |void |dump_exec_pos |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\ |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8|const U32 depth @@ -2410,12 +2690,12 @@ poM |void |sv_kill_backrefs |NN SV *const sv|NULLOK AV *const av #if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C) pR |SV * |varname |NULLOK const GV *const gv|const char gvtype \ |PADOFFSET targ|NULLOK const SV *const keyname \ - |I32 aindex|int subscript_type + |SSize_t aindex|int subscript_type #endif pX |void |sv_del_backref |NN SV *const tsv|NN SV *const sv #if defined(PERL_IN_SV_C) -nsR |char * |uiv_2buf |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob +niR |char * |uiv_2buf |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob i |void |sv_unglob |NN SV *const sv|U32 flags s |const char *|sv_display |NN SV *const sv|NN char *tmpbuf|STRLEN tmpbuf_size s |void |not_a_number |NN SV *const sv @@ -2431,7 +2711,7 @@ s |int |sv_2iuv_non_preserve |NN SV *const sv|I32 numtype s |int |sv_2iuv_non_preserve |NN SV *const sv # endif # endif -sR |I32 |expect_number |NN char **const pattern +sR |STRLEN |expect_number |NN const char **const pattern sn |STRLEN |sv_pos_u2b_forwards|NN const U8 *const start \ |NN const U8 *const send|NN STRLEN *const uoffset \ |NN bool *const at_end @@ -2460,7 +2740,18 @@ s |void |anonymise_cv_maybe |NN GV *gv|NN CV *cv : Used in sv.c and hv.c po |void * |more_bodies |const svtype sv_type|const size_t body_size \ |const size_t arena_size +EXpR |SV* |get_and_check_backslash_N_name|NN const char* s \ + |NN const char* const e \ + |const bool is_utf8 \ + |NN const char** error_msg +: For use ONLY in B::Hooks::Parser, by special dispensation +EXpMR |char* |scan_str |NN char *start|int keep_quoted \ + |int keep_delims|int re_reparse \ + |NULLOK char **delimp +EXpM |char* |scan_word |NN char *s|NN char *dest|STRLEN destlen \ + |int allow_package|NN STRLEN *slp +EXpMR |char* |skipspace_flags|NN char *s|U32 flags #if defined(PERL_IN_TOKE_C) s |void |check_uni s |void |force_next |I32 type @@ -2470,24 +2761,18 @@ s |char* |force_word |NN char *start|int token|int check_keyword \ |int allow_pack s |SV* |tokeq |NN SV *sv sR |char* |scan_const |NN char *start -iR |SV* |get_and_check_backslash_N_name|NN const char* s \ +sR |SV* |get_and_check_backslash_N_name_wrapper|NN const char* s \ |NN const char* const e sR |char* |scan_formline |NN char *s sR |char* |scan_heredoc |NN char *s -s |char* |scan_ident |NN char *s|NN char *dest \ +s |char* |scan_ident |NN char *s|NN char *dest \ |STRLEN destlen|I32 ck_uni sR |char* |scan_inputsymbol|NN char *start sR |char* |scan_pat |NN char *start|I32 type -sR |char* |scan_str |NN char *start|int keep_quoted \ - |int keep_delims|int re_reparse \ - |NULLOK char **delimp sR |char* |scan_subst |NN char *start sR |char* |scan_trans |NN char *start -s |char* |scan_word |NN char *s|NN char *dest|STRLEN destlen \ - |int allow_package|NN STRLEN *slp s |void |update_debugger_info|NULLOK SV *orig_sv \ |NULLOK const char *const buf|STRLEN len -sR |char* |skipspace_flags|NN char *s|U32 flags sR |char* |swallow_bom |NN U8 *s #ifndef PERL_NO_UTF16_FILTER s |I32 |utf16_textfilter|int idx|NN SV *sv|int maxlen @@ -2497,11 +2782,11 @@ s |void |checkcomma |NN const char *s|NN const char *name \ |NN const char *what s |void |force_ident |NN const char *s|int kind s |void |force_ident_maybe_lex|char pit -s |void |incline |NN const char *s +s |void |incline |NN const char *s|NN const char *end s |int |intuit_method |NN char *s|NULLOK SV *ioname|NULLOK CV *cv -s |int |intuit_more |NN char *s -s |I32 |lop |I32 f|int x|NN char *s -rs |void |missingterm |NULLOK char *s +s |int |intuit_more |NN char *s|NN char *e +s |I32 |lop |I32 f|U8 x|NN char *s +rs |void |missingterm |NULLOK char *s|STRLEN len s |void |no_op |NN const char *const what|NULLOK char *s s |int |pending_ident sR |I32 |sublex_done @@ -2510,15 +2795,16 @@ sR |I32 |sublex_start sR |char * |filter_gets |NN SV *sv|STRLEN append sR |HV * |find_in_my_stash|NN const char *pkgname|STRLEN len sR |char * |tokenize_use |int is_use|NN char *s -so |SV* |new_constant |NULLOK const char *s|STRLEN len \ +so |SV* |new_constant |NULLOK const char *s|STRLEN len \ |NN const char *key|STRLEN keylen|NN SV *sv \ - |NULLOK SV *pv|NULLOK const char *type \ - |STRLEN typelen -s |int |deprecate_commaless_var_list + |NULLOK SV *pv|NULLOK const char *type \ + |STRLEN typelen \ + |NULLOK const char ** error_msg s |int |ao |int toketype -s |void|parse_ident|NN char **s|NN char **d \ +s |void|parse_ident|NN char **s|NN char **d \ |NN char * const e|int allow_package \ - |bool is_utf8 + |bool is_utf8|bool check_dollar \ + |bool tick_warn # if defined(PERL_CR_FILTER) s |I32 |cr_textfilter |int idx|NULLOK SV *sv|int maxlen s |void |strip_return |NN SV *sv @@ -2528,25 +2814,66 @@ s |int |tokereport |I32 rv|NN const YYSTYPE* lvalp sf |void |printbuf |NN const char *const fmt|NN const char *const s # endif #endif -EXMp |bool |validate_proto |NN SV *name|NULLOK SV *proto|bool warn +EXMp |bool |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \ + |bool curstash #if defined(PERL_IN_UNIVERSAL_C) s |bool |isa_lookup |NN HV *stash|NN const char * const name \ |STRLEN len|U32 flags #endif -#if defined(USE_LOCALE) && defined(PERL_IN_LOCALE_C) +#if defined(PERL_IN_LOCALE_C) +# ifdef USE_LOCALE +sn |const char*|category_name |const int category +s |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale +s |void |restore_switched_locale|const int category|NULLOK const char * const original_locale +# endif +# ifdef HAS_NL_LANGINFO +sn |const char*|my_nl_langinfo|const nl_item item|bool toggle +# else +sn |const char*|my_nl_langinfo|const int item|bool toggle +# endif +inR |const char *|save_to_buffer|NULLOK const char * string \ + |NULLOK char **buf \ + |NN Size_t *buf_size \ + |const Size_t offset +# if defined(USE_LOCALE) s |char* |stdize_locale |NN char* locs +s |void |new_collate |NULLOK const char* newcoll +s |void |new_ctype |NN const char* newctype +s |void |set_numeric_radix|const bool use_locale +s |void |new_numeric |NULLOK const char* newnum +# ifdef USE_POSIX_2008_LOCALE +sn |const char*|emulate_setlocale|const int category \ + |NULLOK const char* locale \ + |unsigned int index \ + |const bool is_index_valid +# endif +# ifdef WIN32 +s |char* |win32_setlocale|int category|NULLOK const char* locale +# endif +# ifdef DEBUGGING +s |void |print_collxfrm_input_and_return \ + |NN const char * const s \ + |NN const char * const e \ + |NULLOK const STRLEN * const xlen \ + |const bool is_utf8 +s |void |print_bytes_for_locale |NN const char * const s \ + |NN const char * const e \ + |const bool is_utf8 +snR |char * |setlocale_debug_string |const int category \ + |NULLOK const char* const locale \ + |NULLOK const char* const retval +# endif +# endif #endif -#if defined(USE_LOCALE) \ - && (defined(PERL_IN_LOCALE_C) || defined (PERL_EXT_POSIX)) +#if defined(USE_LOCALE) \ + && ( defined(PERL_IN_LOCALE_C) \ + || defined(PERL_IN_MG_C) \ + || defined (PERL_EXT_POSIX) \ + || defined (PERL_EXT_LANGINFO)) ApM |bool |_is_cur_LC_category_utf8|int category -# ifdef DEBUGGING -AMnPpR |char * |_setlocale_debug_string|const int category \ - |NULLOK const char* const locale \ - |NULLOK const char* const retval -# endif #endif @@ -2569,29 +2896,29 @@ pn |Malloc_t |mem_log_realloc |const UV n|const UV typesize|NN const char *type_ pn |Malloc_t |mem_log_free |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname #endif -#if defined(PERL_IN_NUMERIC_C) -#ifndef USE_QUADMATH -sn |NV|mulexp10 |NV value|I32 exponent -#endif -#endif - #if defined(PERL_IN_UTF8_C) +sR |HV * |new_msg_hv |NN const char * const message \ + |U32 categories \ + |U32 flag sRM |UV |check_locale_boundary_crossing \ |NN const U8* const p \ |const UV result \ |NN U8* const ustrp \ |NN STRLEN *lenp -iR |bool |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname|NULLOK SV* const invlist +iR |bool |is_utf8_common |NN const U8 *const p \ + |NULLOK SV* const invlist +iR |bool |is_utf8_common_with_len|NN const U8 *const p \ + |NN const U8 *const e \ + |NULLOK SV* const invlist sR |SV* |swatch_get |NN SV* swash|UV start|UV span sRM |U8* |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \ |NN UV* max|NN UV* val|const bool wants_value \ |NN const U8* const typestr #endif -#ifndef PERL_NO_INLINE_FUNCTIONS -AiMn |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest -#endif +EXiMn |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest +Apd |void |sv_set_undef |NN SV *sv Apd |void |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags Apd |void |sv_catpvn_flags|NN SV *const dstr|NN const char *sstr|const STRLEN len \ |const I32 flags @@ -2601,10 +2928,11 @@ Apd |void |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const ssv|const I32 flags Apmd |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags Ap |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags -pmb |void |sv_copypv |NN SV *const dsv|NN SV *const ssv +Apmb |void |sv_copypv |NN SV *const dsv|NN SV *const ssv Apmd |void |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv Apd |void |sv_copypv_flags |NN SV *const dsv|NN SV *const ssv|const I32 flags -Ap |char* |my_atof2 |NN const char *s|NN NV* value +Apo |char* |my_atof2 |NN const char *orig|NN NV* value +Ap |char* |my_atof3 |NN const char *orig|NN NV* value|const STRLEN len Apn |int |my_socketpair |int family|int type|int protocol|int fd[2] Apn |int |my_dirfd |NULLOK DIR* dir #ifdef PERL_ANY_COW @@ -2655,7 +2983,7 @@ s |void |deb_stack_n |NN SV** stack_base|I32 stack_min \ #endif : pad API -Apda |PADLIST*|pad_new |int flags +ApdR |PADLIST*|pad_new |int flags #ifdef DEBUGGING pnX |void|set_padlist| NN CV * cv | NULLOK PADLIST * padlist #endif @@ -2703,7 +3031,7 @@ sd |void |pad_reset #endif AMpd |void |pad_tidy |padtidy_type type pd |void |pad_free |PADOFFSET po -pd |void |do_dump_pad |I32 level|NN PerlIO *file|NULLOK PADLIST *padlist|int full +pd |void |do_dump_pad |I32 level|NN PerlIO *file|NULLOK PADLIST *padlist|int full #if defined(PERL_IN_PAD_C) # if defined(DEBUGGING) sd |void |cv_dump |NN const CV *cv|NN const char *title @@ -2744,11 +3072,13 @@ Apod |void |hv_assert |NN HV *hv #endif ApdR |SV* |hv_scalar |NN HV *hv +p |void |hv_pushkv |NN HV *hv|U32 flags +ApdRM |SV* |hv_bucket_ratio|NN HV *hv ApoR |I32* |hv_riter_p |NN HV *hv ApoR |HE** |hv_eiter_p |NN HV *hv Apo |void |hv_riter_set |NN HV *hv|I32 riter Apo |void |hv_eiter_set |NN HV *hv|NULLOK HE *eiter -Ap |void |hv_rand_set |NN HV *hv|U32 new_xhv_rand +Ap |void |hv_rand_set |NN HV *hv|U32 new_xhv_rand Ap |void |hv_name_set |NN HV *hv|NULLOK const char *name|U32 len|U32 flags p |void |hv_ename_add |NN HV *hv|NN const char *name|U32 len \ |U32 flags @@ -2770,7 +3100,7 @@ p |SV* |magic_scalarpack|NN HV *hv|NN MAGIC *mg #if defined(PERL_IN_SV_C) s |SV * |find_hash_subscript|NULLOK const HV *const hv \ |NN const SV *const val -s |I32 |find_array_subscript|NULLOK const AV *const av \ +s |SSize_t|find_array_subscript|NULLOK const AV *const av \ |NN const SV *const val sMd |SV* |find_uninit_var|NULLOK const OP *const obase \ |NULLOK const SV *const uninit_sv|bool match \ @@ -2791,16 +3121,14 @@ Apbm |GV* |gv_SVadd |NULLOK GV *gv #if defined(PERL_IN_UTIL_C) s |bool |ckwarn_common |U32 w #endif -Apo |bool |ckwarn |U32 w -Apo |bool |ckwarn_d |U32 w +ApoP |bool |ckwarn |U32 w +ApoP |bool |ckwarn_d |U32 w : FIXME - exported for ByteLoader - public or private? -XEopMa |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ +XEopMR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ |NN const char *const bits|STRLEN size -#ifndef SPRINTF_RETURNS_STRLEN -Apnod |int |my_sprintf |NN char *buffer|NN const char *pat|... -#endif - +: DON'T REMOVE THE my_sprintf LINE. +Apnod |int |my_sprintf |NN char *buffer|NN const char *pat|... Apnodf |int |my_snprintf |NN char *buffer|const Size_t len|NN const char *format|... Apnod |int |my_vsnprintf |NN char *buffer|const Size_t len|NN const char *format|va_list ap #ifdef USE_QUADMATH @@ -2816,7 +3144,7 @@ px |void |my_clearenv Apo |void* |my_cxt_init |NN const char *my_cxt_key|size_t size Apo |int |my_cxt_index |NN const char *my_cxt_key #else -Apo |void* |my_cxt_init |NN int *index|size_t size +Apo |void* |my_cxt_init |NN int *indexp|size_t size #endif #endif #if defined(PERL_IN_UTIL_C) @@ -2831,10 +3159,21 @@ Apnod |Size_t |my_strlcat |NULLOK char *dst|NULLOK const char *src|Size_t size #endif #ifndef HAS_STRLCPY -Apnod |Size_t |my_strlcpy |NULLOK char *dst|NULLOK const char *src|Size_t size +Apnod |Size_t |my_strlcpy |NULLOK char *dst|NULLOK const char *src|Size_t size +#endif + +#ifndef HAS_STRNLEN +Apnod |Size_t |my_strnlen |NN const char *str|Size_t maxlen #endif -Apdn |bool |isinfnan |NV nv +#ifndef HAS_MKOSTEMP +pno |int |my_mkostemp |NN char *templte|int flags +#endif +#ifndef HAS_MKSTEMP +pno |int |my_mkstemp |NN char *templte +#endif + +APpdn |bool |isinfnan |NV nv p |bool |isinfnansv |NN SV *sv #if !defined(HAS_SIGNBIT) @@ -2896,7 +3235,7 @@ xpo |int |keyword_plugin_standard|NN char* keyword_ptr|STRLEN keyword_len|NN OP* # if defined(PERL_IN_SV_C) s |void |unreferenced_to_tmp_stack|NN AV *const unreferenced # endif -Aanop |CLONE_PARAMS *|clone_params_new|NN PerlInterpreter *const from \ +ARnop |CLONE_PARAMS *|clone_params_new|NN PerlInterpreter *const from \ |NN PerlInterpreter *const to Anop |void |clone_params_del|NN CLONE_PARAMS *param #endif @@ -2915,7 +3254,6 @@ Ei |STRLEN |sv_or_pv_pos_u2b|NN SV *sv|NN const char *pv|STRLEN pos \ |NULLOK STRLEN *lenp #endif -EMpPX |SV* |_get_encoding Ap |void |clear_defarray |NN AV* av|bool abandon ApM |void |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \ @@ -2947,10 +3285,12 @@ AiM |void |cx_popgiven |NN PERL_CONTEXT *cx #endif #ifdef USE_DTRACE -XEop |void |dtrace_probe_call |NN CV *cv|bool is_call -XEop |void |dtrace_probe_load |NN const char *name|bool is_loading -XEop |void |dtrace_probe_op |NN const OP *op -XEop |void |dtrace_probe_phase|enum perl_phase phase +XEop |void |dtrace_probe_call |NN CV *cv|bool is_call +XEop |void |dtrace_probe_load |NN const char *name|bool is_loading +XEop |void |dtrace_probe_op |NN const OP *op +XEop |void |dtrace_probe_phase|enum perl_phase phase #endif +XEop |STRLEN*|dup_warnings |NULLOK STRLEN* warnings + : ex: set ts=8 sts=4 sw=4 noet: diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/cop b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/cop index 355a2e1aad9..40d31267c27 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/cop +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/cop @@ -182,7 +182,7 @@ print "# $file\n"; ok($file =~ /cop/i); BEGIN { - if ($] < 5.006000) { + if ("$]" < 5.006000) { # Skip for (1..28) { ok(1, 1); diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic index bf43a9ccdcb..cecf3ca63c1 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic @@ -17,70 +17,11 @@ sv_unmagicext __UNDEFINED__ /sv_\w+_mg/ sv_magic_portable -MUTABLE_PTR -MUTABLE_SV =implementation __UNDEFINED__ SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END -/* Some random bits for sv_unmagicext. These should probably be pulled in for - real and organized at some point */ - -__UNDEFINED__ HEf_SVKEY -2 - -#ifndef MUTABLE_PTR -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) -# define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) -#else -# define MUTABLE_PTR(p) ((void *) (p)) -#endif -#endif - -__UNDEFINED__ MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) - -/* end of random bits */ - -__UNDEFINED__ PERL_MAGIC_sv '\0' -__UNDEFINED__ PERL_MAGIC_overload 'A' -__UNDEFINED__ PERL_MAGIC_overload_elem 'a' -__UNDEFINED__ PERL_MAGIC_overload_table 'c' -__UNDEFINED__ PERL_MAGIC_bm 'B' -__UNDEFINED__ PERL_MAGIC_regdata 'D' -__UNDEFINED__ PERL_MAGIC_regdatum 'd' -__UNDEFINED__ PERL_MAGIC_env 'E' -__UNDEFINED__ PERL_MAGIC_envelem 'e' -__UNDEFINED__ PERL_MAGIC_fm 'f' -__UNDEFINED__ PERL_MAGIC_regex_global 'g' -__UNDEFINED__ PERL_MAGIC_isa 'I' -__UNDEFINED__ PERL_MAGIC_isaelem 'i' -__UNDEFINED__ PERL_MAGIC_nkeys 'k' -__UNDEFINED__ PERL_MAGIC_dbfile 'L' -__UNDEFINED__ PERL_MAGIC_dbline 'l' -__UNDEFINED__ PERL_MAGIC_mutex 'm' -__UNDEFINED__ PERL_MAGIC_shared 'N' -__UNDEFINED__ PERL_MAGIC_shared_scalar 'n' -__UNDEFINED__ PERL_MAGIC_collxfrm 'o' -__UNDEFINED__ PERL_MAGIC_tied 'P' -__UNDEFINED__ PERL_MAGIC_tiedelem 'p' -__UNDEFINED__ PERL_MAGIC_tiedscalar 'q' -__UNDEFINED__ PERL_MAGIC_qr 'r' -__UNDEFINED__ PERL_MAGIC_sig 'S' -__UNDEFINED__ PERL_MAGIC_sigelem 's' -__UNDEFINED__ PERL_MAGIC_taint 't' -__UNDEFINED__ PERL_MAGIC_uvar 'U' -__UNDEFINED__ PERL_MAGIC_uvar_elem 'u' -__UNDEFINED__ PERL_MAGIC_vstring 'V' -__UNDEFINED__ PERL_MAGIC_vec 'v' -__UNDEFINED__ PERL_MAGIC_utf8 'w' -__UNDEFINED__ PERL_MAGIC_substr 'x' -__UNDEFINED__ PERL_MAGIC_defelem 'y' -__UNDEFINED__ PERL_MAGIC_glob '*' -__UNDEFINED__ PERL_MAGIC_arylen '#' -__UNDEFINED__ PERL_MAGIC_pos '.' -__UNDEFINED__ PERL_MAGIC_backref '<' -__UNDEFINED__ PERL_MAGIC_ext '~' - /* That's the best we can do... */ __UNDEFINED__ sv_catpvn_nomg sv_catpvn __UNDEFINED__ sv_catsv_nomg sv_catsv @@ -604,8 +545,8 @@ ok($h{sv}, 'Perl'); # v1 is treated as a bareword in older perls... my $ver = do { local $SIG{'__WARN__'} = sub {}; eval qq[v1.2.0] }; -ok($] < 5.009 || $@ eq ''); -ok($] < 5.009 || Devel::PPPort::SvVSTRING_mg($ver)); +ok("$]" < 5.009 || $@ eq ''); +ok("$]" < 5.009 || Devel::PPPort::SvVSTRING_mg($ver)); ok(!Devel::PPPort::SvVSTRING_mg(4711)); my $foo = 'bar'; diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic_defs b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic_defs new file mode 100644 index 00000000000..f3475a95fa6 --- /dev/null +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/magic_defs @@ -0,0 +1,56 @@ +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. +## Version 2.x, Copyright (C) 2001, Paul Marquess. +## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. +## +## This program is free software; you can redistribute it and/or +## modify it under the same terms as Perl itself. +## +################################################################################ + +=provides + +__UNDEFINED__ + +=implementation + +__UNDEFINED__ PERL_MAGIC_sv '\0' +__UNDEFINED__ PERL_MAGIC_overload 'A' +__UNDEFINED__ PERL_MAGIC_overload_elem 'a' +__UNDEFINED__ PERL_MAGIC_overload_table 'c' +__UNDEFINED__ PERL_MAGIC_bm 'B' +__UNDEFINED__ PERL_MAGIC_regdata 'D' +__UNDEFINED__ PERL_MAGIC_regdatum 'd' +__UNDEFINED__ PERL_MAGIC_env 'E' +__UNDEFINED__ PERL_MAGIC_envelem 'e' +__UNDEFINED__ PERL_MAGIC_fm 'f' +__UNDEFINED__ PERL_MAGIC_regex_global 'g' +__UNDEFINED__ PERL_MAGIC_isa 'I' +__UNDEFINED__ PERL_MAGIC_isaelem 'i' +__UNDEFINED__ PERL_MAGIC_nkeys 'k' +__UNDEFINED__ PERL_MAGIC_dbfile 'L' +__UNDEFINED__ PERL_MAGIC_dbline 'l' +__UNDEFINED__ PERL_MAGIC_mutex 'm' +__UNDEFINED__ PERL_MAGIC_shared 'N' +__UNDEFINED__ PERL_MAGIC_shared_scalar 'n' +__UNDEFINED__ PERL_MAGIC_collxfrm 'o' +__UNDEFINED__ PERL_MAGIC_tied 'P' +__UNDEFINED__ PERL_MAGIC_tiedelem 'p' +__UNDEFINED__ PERL_MAGIC_tiedscalar 'q' +__UNDEFINED__ PERL_MAGIC_qr 'r' +__UNDEFINED__ PERL_MAGIC_sig 'S' +__UNDEFINED__ PERL_MAGIC_sigelem 's' +__UNDEFINED__ PERL_MAGIC_taint 't' +__UNDEFINED__ PERL_MAGIC_uvar 'U' +__UNDEFINED__ PERL_MAGIC_uvar_elem 'u' +__UNDEFINED__ PERL_MAGIC_vstring 'V' +__UNDEFINED__ PERL_MAGIC_vec 'v' +__UNDEFINED__ PERL_MAGIC_utf8 'w' +__UNDEFINED__ PERL_MAGIC_substr 'x' +__UNDEFINED__ PERL_MAGIC_defelem 'y' +__UNDEFINED__ PERL_MAGIC_glob '*' +__UNDEFINED__ PERL_MAGIC_arylen '#' +__UNDEFINED__ PERL_MAGIC_pos '.' +__UNDEFINED__ PERL_MAGIC_backref '<' +__UNDEFINED__ PERL_MAGIC_ext '~' diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/mess b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/mess index 49755ec3896..e9af1740aba 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/mess +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/mess @@ -52,8 +52,8 @@ NEED_vmess # if ( { VERSION >= 5.8.0 } && { VERSION < 5.8.9 } ) || ( { VERSION >= 5.9.0 } && { VERSION < 5.10.1 } ) # define D_PPP_FIX_UTF8_ERRSV(errsv, sv) \ STMT_START { \ - if (sv != ERRSV) \ - SvFLAGS(ERRSV) = (SvFLAGS(ERRSV) & ~SVf_UTF8) | \ + if (sv != errsv) \ + SvFLAGS(errsv) = (SvFLAGS(errsv) & ~SVf_UTF8) | \ (SvFLAGS(sv) & SVf_UTF8); \ } STMT_END # else diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/misc b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/misc index 949c481088e..2bd2dcfb028 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/misc +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/misc @@ -12,43 +12,29 @@ =provides __UNDEFINED__ -PERL_UNUSED_DECL +END_EXTERN_C +EXTERN_C +INT2PTR +MUTABLE_PTR +NVTYPE +PERL_GCC_BRACE_GROUPS_FORBIDDEN +PERLIO_FUNCS_CAST +PERLIO_FUNCS_DECL PERL_UNUSED_ARG -PERL_UNUSED_VAR PERL_UNUSED_CONTEXT +PERL_UNUSED_DECL PERL_UNUSED_RESULT -PERL_GCC_BRACE_GROUPS_FORBIDDEN +PERL_UNUSED_VAR PERL_USE_GCC_BRACE_GROUPS -PERLIO_FUNCS_DECL -PERLIO_FUNCS_CAST -NVTYPE -INT2PTR -PTRV -NUM2PTR -PERL_HASH -PTR2IV -PTR2UV -PTR2NV PTR2ul +PTRV START_EXTERN_C -END_EXTERN_C -EXTERN_C -STMT_START STMT_END +STMT_START +SvRX UTF8_MAXBYTES WIDEST_UTYPE XSRETURN -HeUTF8 -C_ARRAY_LENGTH -C_ARRAY_END -SvRX -SvRXOK -cBOOL -OpHAS_SIBLING -OpSIBLING -OpMORESIB_set -OpLASTSIB_set -OpMAYBESIB_set =implementation @@ -58,6 +44,13 @@ __UNDEFINED__ OpSIBLING(o) (0 + (o)->op_sibling) __UNDEFINED__ OpMORESIB_set(o, sib) ((o)->op_sibling = (sib)) __UNDEFINED__ OpLASTSIB_set(o, parent) ((o)->op_sibling = NULL) __UNDEFINED__ OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib)) +__UNDEFINED__ HEf_SVKEY -2 + +#if defined(DEBUGGING) && !defined(__COVERITY__) +__UNDEFINED__ __ASSERT_(statement) assert(statement), +#else +__UNDEFINED__ __ASSERT_(statement) +#endif #ifndef SvRX #if { NEED SvRX } @@ -212,6 +205,9 @@ __UNDEFINED__ DEFSV_set(sv) (DEFSV = (sv)) /* Older perls (<=5.003) lack AvFILLp */ __UNDEFINED__ AvFILLp AvFILL +__UNDEFINED__ av_tindex AvFILL +__UNDEFINED__ av_top_index AvFILL + __UNDEFINED__ ERRSV get_sv("@",FALSE) /* Hint: gv_stashpvn @@ -299,26 +295,6 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); #endif -__UNDEFINED__ isPSXSPC(c) (isSPACE(c) || (c) == '\v') -__UNDEFINED__ isBLANK(c) ((c) == ' ' || (c) == '\t') -#ifdef EBCDIC -__UNDEFINED__ isALNUMC(c) isalnum(c) -__UNDEFINED__ isASCII(c) isascii(c) -__UNDEFINED__ isCNTRL(c) iscntrl(c) -__UNDEFINED__ isGRAPH(c) isgraph(c) -__UNDEFINED__ isPRINT(c) isprint(c) -__UNDEFINED__ isPUNCT(c) ispunct(c) -__UNDEFINED__ isXDIGIT(c) isxdigit(c) -#else -# if { VERSION < 5.10.0 } -/* Hint: isPRINT - * The implementation in older perl versions includes all of the - * isSPACE() characters, which is wrong. The version provided by - * Devel::PPPort always overrides a present buggy version. - */ -# undef isPRINT -# endif - #ifndef WIDEST_UTYPE # ifdef QUADKIND # ifdef U64TYPE @@ -331,14 +307,196 @@ __UNDEFINED__ isXDIGIT(c) isxdigit(c) # endif #endif -__UNDEFINED__ isALNUMC(c) (isALPHA(c) || isDIGIT(c)) +#ifdef EBCDIC + +/* This is the first version where these macros are fully correct. Relying on + * the C library functions, as earlier releases did, causes problems with + * locales */ +# if { VERSION < 5.22.0 } +# undef isALNUM +# undef isALNUM_A +# undef isALNUMC +# undef isALNUMC_A +# undef isALPHA +# undef isALPHA_A +# undef isALPHANUMERIC +# undef isALPHANUMERIC_A +# undef isASCII +# undef isASCII_A +# undef isBLANK +# undef isBLANK_A +# undef isCNTRL +# undef isCNTRL_A +# undef isDIGIT +# undef isDIGIT_A +# undef isGRAPH +# undef isGRAPH_A +# undef isIDCONT +# undef isIDCONT_A +# undef isIDFIRST +# undef isIDFIRST_A +# undef isLOWER +# undef isLOWER_A +# undef isOCTAL +# undef isOCTAL_A +# undef isPRINT +# undef isPRINT_A +# undef isPSXSPC +# undef isPSXSPC_A +# undef isPUNCT +# undef isPUNCT_A +# undef isSPACE +# undef isSPACE_A +# undef isUPPER +# undef isUPPER_A +# undef isWORDCHAR +# undef isWORDCHAR_A +# undef isXDIGIT +# undef isXDIGIT_A +# endif + +__UNDEFINED__ isASCII(c) (isCNTRL(c) || isPRINT(c)) + + /* The below is accurate for all EBCDIC code pages supported by + * all the versions of Perl overridden by this */ +__UNDEFINED__ isCNTRL(c) ( (c) == '\0' || (c) == '\a' || (c) == '\b' \ + || (c) == '\f' || (c) == '\n' || (c) == '\r' \ + || (c) == '\t' || (c) == '\v' \ + || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */ \ + || (c) == 7 /* U+7F DEL */ \ + || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */ \ + /* DLE, DC[1-3] */ \ + || (c) == 0x18 /* U+18 CAN */ \ + || (c) == 0x19 /* U+19 EOM */ \ + || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */ \ + || (c) == 0x26 /* U+17 ETB */ \ + || (c) == 0x27 /* U+1B ESC */ \ + || (c) == 0x2D /* U+05 ENQ */ \ + || (c) == 0x2E /* U+06 ACK */ \ + || (c) == 0x32 /* U+16 SYN */ \ + || (c) == 0x37 /* U+04 EOT */ \ + || (c) == 0x3C /* U+14 DC4 */ \ + || (c) == 0x3D /* U+15 NAK */ \ + || (c) == 0x3F /* U+1A SUB */ \ + ) +/* The ordering of the tests in this and isUPPER are to exclude most characters + * early */ +__UNDEFINED__ isLOWER(c) ( (c) >= 'a' && (c) <= 'z' \ + && ( (c) <= 'i' \ + || ((c) >= 'j' && (c) <= 'r') \ + || (c) >= 's')) +__UNDEFINED__ isUPPER(c) ( (c) >= 'A' && (c) <= 'Z' \ + && ( (c) <= 'I' \ + || ((c) >= 'J' && (c) <= 'R') \ + || (c) >= 'S')) + +#else /* Above is EBCDIC; below is ASCII */ + +# if { VERSION < 5.4.0 } +/* The implementation of these in older perl versions can give wrong results if + * the C program locale is set to other than the C locale */ +# undef isALNUM +# undef isALNUM_A +# undef isALPHA +# undef isALPHA_A +# undef isDIGIT +# undef isDIGIT_A +# undef isIDFIRST +# undef isIDFIRST_A +# undef isLOWER +# undef isLOWER_A +# undef isUPPER +# undef isUPPER_A +# endif + +# if { VERSION < 5.8.0 } +/* Hint: isCNTRL + * Earlier perls omitted DEL */ +# undef isCNTRL +# endif + +# if { VERSION < 5.10.0 } +/* Hint: isPRINT + * The implementation in older perl versions includes all of the + * isSPACE() characters, which is wrong. The version provided by + * Devel::PPPort always overrides a present buggy version. + */ +# undef isPRINT +# undef isPRINT_A +# endif + +# if { VERSION < 5.14.0 } +/* Hint: isASCII + * The implementation in older perl versions always returned true if the + * parameter was a signed char + */ +# undef isASCII +# undef isASCII_A +# endif + +# if { VERSION < 5.20.0 } +/* Hint: isSPACE + * The implementation in older perl versions didn't include \v */ +# undef isSPACE +# undef isSPACE_A +# endif + __UNDEFINED__ isASCII(c) ((WIDEST_UTYPE) (c) <= 127) __UNDEFINED__ isCNTRL(c) ((WIDEST_UTYPE) (c) < ' ' || (c) == 127) -__UNDEFINED__ isGRAPH(c) (isALNUM(c) || isPUNCT(c)) -__UNDEFINED__ isPRINT(c) (((c) >= 32 && (c) < 127)) -__UNDEFINED__ isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) -__UNDEFINED__ isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) -#endif +__UNDEFINED__ isLOWER(c) ((c) >= 'a' && (c) <= 'z') +__UNDEFINED__ isUPPER(c) ((c) <= 'Z' && (c) >= 'A') +#endif /* Below are definitions common to EBCDIC and ASCII */ + +__UNDEFINED__ isALNUM(c) isWORDCHAR(c) +__UNDEFINED__ isALNUMC(c) isALPHANUMERIC(c) +__UNDEFINED__ isALPHA(c) (isUPPER(c) || isLOWER(c)) +__UNDEFINED__ isALPHANUMERIC(c) (isALPHA(c) || isDIGIT(c)) +__UNDEFINED__ isBLANK(c) ((c) == ' ' || (c) == '\t') +__UNDEFINED__ isDIGIT(c) ((c) <= '9' && (c) >= '0') +__UNDEFINED__ isGRAPH(c) (isWORDCHAR(c) || isPUNCT(c)) +__UNDEFINED__ isIDCONT(c) isWORDCHAR(c) +__UNDEFINED__ isIDFIRST(c) (isALPHA(c) || (c) == '_') +__UNDEFINED__ isOCTAL(c) (((WIDEST_UTYPE)((c)) & ~7) == '0') +__UNDEFINED__ isPRINT(c) (isGRAPH(c) || (c) == ' ') +__UNDEFINED__ isPSXSPC(c) isSPACE(c) +__UNDEFINED__ isPUNCT(c) ( (c) == '-' || (c) == '!' || (c) == '"' \ + || (c) == '#' || (c) == '$' || (c) == '%' \ + || (c) == '&' || (c) == '\'' || (c) == '(' \ + || (c) == ')' || (c) == '*' || (c) == '+' \ + || (c) == ',' || (c) == '.' || (c) == '/' \ + || (c) == ':' || (c) == ';' || (c) == '<' \ + || (c) == '=' || (c) == '>' || (c) == '?' \ + || (c) == '@' || (c) == '[' || (c) == '\\' \ + || (c) == ']' || (c) == '^' || (c) == '_' \ + || (c) == '`' || (c) == '{' || (c) == '|' \ + || (c) == '}' || (c) == '~') +__UNDEFINED__ isSPACE(c) ( isBLANK(c) || (c) == '\n' || (c) == '\r' \ + || (c) == '\v' || (c) == '\f') +__UNDEFINED__ isWORDCHAR(c) (isALPHANUMERIC(c) || (c) == '_') +__UNDEFINED__ isXDIGIT(c) ( isDIGIT(c) \ + || ((c) >= 'a' && (c) <= 'f') \ + || ((c) >= 'A' && (c) <= 'F')) + +__UNDEFINED__ isALNUM_A isALNUM +__UNDEFINED__ isALNUMC_A isALNUMC +__UNDEFINED__ isALPHA_A isALPHA +__UNDEFINED__ isALPHANUMERIC_A isALPHANUMERIC +__UNDEFINED__ isASCII_A isASCII +__UNDEFINED__ isBLANK_A isBLANK +__UNDEFINED__ isCNTRL_A isCNTRL +__UNDEFINED__ isDIGIT_A isDIGIT +__UNDEFINED__ isGRAPH_A isGRAPH +__UNDEFINED__ isIDCONT_A isIDCONT +__UNDEFINED__ isIDFIRST_A isIDFIRST +__UNDEFINED__ isLOWER_A isLOWER +__UNDEFINED__ isOCTAL_A isOCTAL +__UNDEFINED__ isPRINT_A isPRINT +__UNDEFINED__ isPSXSPC_A isPSXSPC +__UNDEFINED__ isPUNCT_A isPUNCT +__UNDEFINED__ isSPACE_A isSPACE +__UNDEFINED__ isUPPER_A isUPPER +__UNDEFINED__ isWORDCHAR_A isWORDCHAR +__UNDEFINED__ isXDIGIT_A isXDIGIT /* Until we figure out how to support this in older perls... */ #if { VERSION >= 5.8.0 } @@ -352,6 +510,21 @@ __UNDEFINED__ HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ __UNDEFINED__ C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) __UNDEFINED__ C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) +__UNDEFINED__ LIKELY(x) (x) +__UNDEFINED__ UNLIKELY(x) (x) + +__UNDEFINED__ UNICODE_REPLACEMENT 0xFFFD + +#ifndef MUTABLE_PTR +#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) +#else +# define MUTABLE_PTR(p) ((void *) (p)) +#endif +#endif + +__UNDEFINED__ MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) + =xsmisc typedef XSPROTO(XSPROTO_test_t); @@ -405,6 +578,7 @@ OpSIBLING_tests() PREINIT: OP *x; OP *kid; + OP *middlekid; OP *lastkid; int count = 0; int failures = 0; @@ -428,6 +602,7 @@ OpSIBLING_tests() kid = OpSIBLING(kid); lastkid = kid; } + middlekid = OpSIBLING(x); /* Should now have a sibling */ if (! OpHAS_SIBLING(x) || ! OpSIBLING(x) ) { @@ -471,6 +646,9 @@ OpSIBLING_tests() failures++; warn("Op should have had a sib after maybesibset"); } + op_free(lastkid); + op_free(middlekid); + op_free(x); RETVAL = failures; OUTPUT: RETVAL @@ -676,7 +854,289 @@ check_c_array() mXPUSHi(C_ARRAY_LENGTH(x)); /* 4 */ mXPUSHi(*(C_ARRAY_END(x)-1)); /* 13 */ -=tests plan => 48 +bool +test_isBLANK(UV ord) + CODE: + RETVAL = isBLANK(ord); + OUTPUT: + RETVAL + +bool +test_isBLANK_A(UV ord) + CODE: + RETVAL = isBLANK_A(ord); + OUTPUT: + RETVAL + +bool +test_isUPPER(UV ord) + CODE: + RETVAL = isUPPER(ord); + OUTPUT: + RETVAL + +bool +test_isUPPER_A(UV ord) + CODE: + RETVAL = isUPPER_A(ord); + OUTPUT: + RETVAL + +bool +test_isLOWER(UV ord) + CODE: + RETVAL = isLOWER(ord); + OUTPUT: + RETVAL + +bool +test_isLOWER_A(UV ord) + CODE: + RETVAL = isLOWER_A(ord); + OUTPUT: + RETVAL + +bool +test_isALPHA(UV ord) + CODE: + RETVAL = isALPHA(ord); + OUTPUT: + RETVAL + +bool +test_isALPHA_A(UV ord) + CODE: + RETVAL = isALPHA_A(ord); + OUTPUT: + RETVAL + +bool +test_isWORDCHAR(UV ord) + CODE: + RETVAL = isWORDCHAR(ord); + OUTPUT: + RETVAL + +bool +test_isWORDCHAR_A(UV ord) + CODE: + RETVAL = isWORDCHAR_A(ord); + OUTPUT: + RETVAL + +bool +test_isALPHANUMERIC(UV ord) + CODE: + RETVAL = isALPHANUMERIC(ord); + OUTPUT: + RETVAL + +bool +test_isALPHANUMERIC_A(UV ord) + CODE: + RETVAL = isALPHANUMERIC_A(ord); + OUTPUT: + RETVAL + +bool +test_isALNUM(UV ord) + CODE: + RETVAL = isALNUM(ord); + OUTPUT: + RETVAL + +bool +test_isALNUM_A(UV ord) + CODE: + RETVAL = isALNUM_A(ord); + OUTPUT: + RETVAL + +bool +test_isDIGIT(UV ord) + CODE: + RETVAL = isDIGIT(ord); + OUTPUT: + RETVAL + +bool +test_isDIGIT_A(UV ord) + CODE: + RETVAL = isDIGIT_A(ord); + OUTPUT: + RETVAL + +bool +test_isOCTAL(UV ord) + CODE: + RETVAL = isOCTAL(ord); + OUTPUT: + RETVAL + +bool +test_isOCTAL_A(UV ord) + CODE: + RETVAL = isOCTAL_A(ord); + OUTPUT: + RETVAL + +bool +test_isIDFIRST(UV ord) + CODE: + RETVAL = isIDFIRST(ord); + OUTPUT: + RETVAL + +bool +test_isIDFIRST_A(UV ord) + CODE: + RETVAL = isIDFIRST_A(ord); + OUTPUT: + RETVAL + +bool +test_isIDCONT(UV ord) + CODE: + RETVAL = isIDCONT(ord); + OUTPUT: + RETVAL + +bool +test_isIDCONT_A(UV ord) + CODE: + RETVAL = isIDCONT_A(ord); + OUTPUT: + RETVAL + +bool +test_isSPACE(UV ord) + CODE: + RETVAL = isSPACE(ord); + OUTPUT: + RETVAL + +bool +test_isSPACE_A(UV ord) + CODE: + RETVAL = isSPACE_A(ord); + OUTPUT: + RETVAL + +bool +test_isASCII(UV ord) + CODE: + RETVAL = isASCII(ord); + OUTPUT: + RETVAL + +bool +test_isASCII_A(UV ord) + CODE: + RETVAL = isASCII_A(ord); + OUTPUT: + RETVAL + +bool +test_isCNTRL(UV ord) + CODE: + RETVAL = isCNTRL(ord); + OUTPUT: + RETVAL + +bool +test_isCNTRL_A(UV ord) + CODE: + RETVAL = isCNTRL_A(ord); + OUTPUT: + RETVAL + +bool +test_isPRINT(UV ord) + CODE: + RETVAL = isPRINT(ord); + OUTPUT: + RETVAL + +bool +test_isPRINT_A(UV ord) + CODE: + RETVAL = isPRINT_A(ord); + OUTPUT: + RETVAL + +bool +test_isGRAPH(UV ord) + CODE: + RETVAL = isGRAPH(ord); + OUTPUT: + RETVAL + +bool +test_isGRAPH_A(UV ord) + CODE: + RETVAL = isGRAPH_A(ord); + OUTPUT: + RETVAL + +bool +test_isPUNCT(UV ord) + CODE: + RETVAL = isPUNCT(ord); + OUTPUT: + RETVAL + +bool +test_isPUNCT_A(UV ord) + CODE: + RETVAL = isPUNCT_A(ord); + OUTPUT: + RETVAL + +bool +test_isXDIGIT(UV ord) + CODE: + RETVAL = isXDIGIT(ord); + OUTPUT: + RETVAL + +bool +test_isXDIGIT_A(UV ord) + CODE: + RETVAL = isXDIGIT_A(ord); + OUTPUT: + RETVAL + +bool +test_isPSXSPC(UV ord) + CODE: + RETVAL = isPSXSPC(ord); + OUTPUT: + RETVAL + +bool +test_isPSXSPC_A(UV ord) + CODE: + RETVAL = isPSXSPC_A(ord); + OUTPUT: + RETVAL + +STRLEN +av_tindex(av) + AV *av + CODE: + RETVAL = av_tindex(av); + OUTPUT: + RETVAL + +STRLEN +av_top_index(av) + AV *av + CODE: + RETVAL = av_top_index(av); + OUTPUT: + RETVAL + +=tests plan => 128 use vars qw($my_sv @my_av %my_hv); @@ -687,7 +1147,7 @@ $_ = "Fred"; ok(&Devel::PPPort::DEFSV(), "Fred"); ok(&Devel::PPPort::UNDERBAR(), "Fred"); -if ($] >= 5.009002 && $] < 5.023 && $] < 5.023004) { +if ("$]" >= 5.009002 && "$]" < 5.023 && "$]" < 5.023004) { eval q{ no warnings "deprecated"; no if $^V > v5.17.9, warnings => "experimental::lexical_topic"; @@ -750,8 +1210,8 @@ ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2'); ok(Devel::PPPort::PERL_ABS(42), 42); ok(Devel::PPPort::PERL_ABS(-13), 13); -ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42'); -ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc'); +ok(Devel::PPPort::SVf(42), "$]" >= 5.004 ? '[42]' : '42'); +ok(Devel::PPPort::SVf('abc'), "$]" >= 5.004 ? '[abc]' : 'abc'); ok(&Devel::PPPort::Perl_ppaddr_t("FOO"), "foo"); @@ -759,7 +1219,7 @@ ok(&Devel::PPPort::ptrtests(), 63); ok(&Devel::PPPort::OpSIBLING_tests(), 0); -if ($] >= 5.009000) { +if ("$]" >= 5.009000) { eval q{ ok(&Devel::PPPort::check_HeUTF8("hello"), "norm"); ok(&Devel::PPPort::check_HeUTF8("\N{U+263a}"), "utf8"); @@ -776,7 +1236,7 @@ ok($r[1], "13"); ok(!Devel::PPPort::SvRXOK("")); ok(!Devel::PPPort::SvRXOK(bless [], "Regexp")); -if ($] < 5.005) { +if ("$]" < 5.005) { skip 'no qr// objects in this perl', 0; skip 'no qr// objects in this perl', 0; } else { @@ -784,3 +1244,132 @@ if ($] < 5.005) { ok(Devel::PPPort::SvRXOK($qr)); ok(Devel::PPPort::SvRXOK(bless $qr, "Surprise")); } + +ok( Devel::PPPort::test_isBLANK(ord(" "))); +ok(! Devel::PPPort::test_isBLANK(ord("\n"))); + +ok( Devel::PPPort::test_isBLANK_A(ord("\t"))); +ok(! Devel::PPPort::test_isBLANK_A(ord("\r"))); + +ok( Devel::PPPort::test_isUPPER(ord("A"))); +ok(! Devel::PPPort::test_isUPPER(ord("a"))); + +ok( Devel::PPPort::test_isUPPER_A(ord("Z"))); + +# One of these two is uppercase in EBCDIC; the other in Latin1, but neither are +# ASCII uppercase. +ok(! Devel::PPPort::test_isUPPER_A(ord(0xDC))); +ok(! Devel::PPPort::test_isUPPER_A(ord(0xFC))); + +ok( Devel::PPPort::test_isLOWER(ord("b"))); +ok(! Devel::PPPort::test_isLOWER(ord("B"))); + +ok( Devel::PPPort::test_isLOWER_A(ord("y"))); + +# One of these two is lowercase in EBCDIC; the other in Latin1, but neither are +# ASCII lowercase. +ok(! Devel::PPPort::test_isLOWER_A(ord(0xDC))); +ok(! Devel::PPPort::test_isLOWER_A(ord(0xFC))); + +ok( Devel::PPPort::test_isALPHA(ord("C"))); +ok(! Devel::PPPort::test_isALPHA(ord("1"))); + +ok( Devel::PPPort::test_isALPHA_A(ord("x"))); +ok(! Devel::PPPort::test_isALPHA_A(0xDC)); + +ok( Devel::PPPort::test_isWORDCHAR(ord("_"))); +ok(! Devel::PPPort::test_isWORDCHAR(ord("@"))); + +ok( Devel::PPPort::test_isWORDCHAR_A(ord("2"))); +ok(! Devel::PPPort::test_isWORDCHAR_A(0xFC)); + +ok( Devel::PPPort::test_isALPHANUMERIC(ord("4"))); +ok(! Devel::PPPort::test_isALPHANUMERIC(ord("_"))); + +ok( Devel::PPPort::test_isALPHANUMERIC_A(ord("l"))); +ok(! Devel::PPPort::test_isALPHANUMERIC_A(0xDC)); + +ok( Devel::PPPort::test_isALNUM(ord("c"))); +ok(! Devel::PPPort::test_isALNUM(ord("}"))); + +ok( Devel::PPPort::test_isALNUM_A(ord("5"))); +ok(! Devel::PPPort::test_isALNUM_A(0xFC)); + +ok( Devel::PPPort::test_isDIGIT(ord("6"))); +ok(! Devel::PPPort::test_isDIGIT(ord("_"))); + +ok( Devel::PPPort::test_isDIGIT_A(ord("7"))); +ok(! Devel::PPPort::test_isDIGIT_A(0xDC)); + +ok( Devel::PPPort::test_isOCTAL(ord("7"))); +ok(! Devel::PPPort::test_isOCTAL(ord("8"))); + +ok( Devel::PPPort::test_isOCTAL_A(ord("0"))); +ok(! Devel::PPPort::test_isOCTAL_A(ord("9"))); + +ok( Devel::PPPort::test_isIDFIRST(ord("D"))); +ok(! Devel::PPPort::test_isIDFIRST(ord("1"))); + +ok( Devel::PPPort::test_isIDFIRST_A(ord("_"))); +ok(! Devel::PPPort::test_isIDFIRST_A(0xFC)); + +ok( Devel::PPPort::test_isIDCONT(ord("e"))); +ok(! Devel::PPPort::test_isIDCONT(ord("@"))); + +ok( Devel::PPPort::test_isIDCONT_A(ord("2"))); +ok(! Devel::PPPort::test_isIDCONT_A(0xDC)); + +ok( Devel::PPPort::test_isSPACE(ord(" "))); +ok(! Devel::PPPort::test_isSPACE(ord("_"))); + +ok( Devel::PPPort::test_isSPACE_A(ord("\cK"))); +ok(! Devel::PPPort::test_isSPACE_A(ord("F"))); + +# This stresses the edge for ASCII machines, but happens to work on EBCDIC as +# well +ok( Devel::PPPort::test_isASCII(0x7F)); +ok(! Devel::PPPort::test_isASCII(0x80)); + +ok( Devel::PPPort::test_isASCII_A(ord("9"))); + +# B6 is the PARAGRAPH SIGN in ASCII and EBCDIC +ok(! Devel::PPPort::test_isASCII_A(0xB6)); + +ok( Devel::PPPort::test_isCNTRL(ord("\e"))); +ok(! Devel::PPPort::test_isCNTRL(ord(" "))); + +ok( Devel::PPPort::test_isCNTRL_A(ord("\a"))); +ok(! Devel::PPPort::test_isCNTRL_A(0xB6)); + +ok( Devel::PPPort::test_isPRINT(ord(" "))); +ok(! Devel::PPPort::test_isPRINT(ord("\n"))); + +ok( Devel::PPPort::test_isPRINT_A(ord("G"))); +ok(! Devel::PPPort::test_isPRINT_A(0xB6)); + +ok( Devel::PPPort::test_isGRAPH(ord("h"))); +ok(! Devel::PPPort::test_isGRAPH(ord(" "))); + +ok( Devel::PPPort::test_isGRAPH_A(ord("i"))); +ok(! Devel::PPPort::test_isGRAPH_A(0xB6)); + +ok( Devel::PPPort::test_isPUNCT(ord("#"))); +ok(! Devel::PPPort::test_isPUNCT(ord(" "))); + +ok( Devel::PPPort::test_isPUNCT_A(ord("*"))); +ok(! Devel::PPPort::test_isPUNCT_A(0xB6)); + +ok( Devel::PPPort::test_isXDIGIT(ord("A"))); +ok(! Devel::PPPort::test_isXDIGIT(ord("_"))); + +ok( Devel::PPPort::test_isXDIGIT_A(ord("9"))); +ok(! Devel::PPPort::test_isXDIGIT_A(0xDC)); + +ok( Devel::PPPort::test_isPSXSPC(ord(" "))); +ok(! Devel::PPPort::test_isPSXSPC(ord("k"))); + +ok( Devel::PPPort::test_isPSXSPC_A(ord("\cK"))); +ok(! Devel::PPPort::test_isPSXSPC_A(0xFC)); + +ok(&Devel::PPPort::av_top_index([1,2,3]), 2); +ok(&Devel::PPPort::av_tindex([1,2,3,4]), 3); diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/newSVpv b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/newSVpv index 513461e5141..7dbe5d03b4f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/newSVpv +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/newSVpv @@ -100,7 +100,7 @@ ok(!defined($s[4])); ok(@s == 1); ok($s[0], "test"); -if ($] >= 5.008001) { +if ("$]" >= 5.008001) { require utf8; ok(utf8::is_utf8($s[0])); } diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphbin b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphbin index 82ebdccb338..9b56eaf5c60 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphbin +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphbin @@ -16,7 +16,7 @@ use strict; # Disable broken TRIE-optimization -BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } +BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= 5.009004 && "$]" <= 5.009005 } my $VERSION = __VERSION__; diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphtest b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphtest index 925929d6681..2be43315633 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphtest +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/ppphtest @@ -75,7 +75,8 @@ ok(Devel::PPPort::GetFileContents(), $data); sub comment { my $c = shift; - $c =~ s/^/# | /mg; + my $x = 0; + $c =~ s/^/sprintf("# %2d| ", ++$x)/meg; $c .= "\n" unless $c =~ /[\r\n]$/; print $c; } @@ -154,14 +155,12 @@ for $t (@tests) { open F, ">$f" or die "open $f: $!\n"; print F "$txt\n"; close F; - $txt =~ s/^/# | /mg; - print "# *** writing $f ***\n$txt\n"; + print "# *** writing $f ***\n"; + comment($txt); } - my $code = $t->{code}; - $code =~ s/^/# | /mg; - - print "# *** evaluating test code ***\n$code\n"; + print "# *** evaluating test code ***\n"; + comment($t->{code}); eval $t->{code}; if ($@) { diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/pv_tools b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/pv_tools index af75c423ca6..c51d91ab22c 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/pv_tools +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/pv_tools @@ -54,7 +54,7 @@ pv_escape(pTHX_ SV *dsv, char const * const str, STRLEN wrote = 0; STRLEN chsize = 0; STRLEN readsize = 1; -#if defined(is_utf8_string) && defined(utf8_to_uvchr) +#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; #endif const char *pv = str; @@ -64,15 +64,15 @@ pv_escape(pTHX_ SV *dsv, char const * const str, if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) sv_setpvs(dsv, ""); -#if defined(is_utf8_string) && defined(utf8_to_uvchr) +#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) isuni = 1; #endif for (; pv < end && (!max || wrote < max) ; pv += readsize) { const UV u = -#if defined(is_utf8_string) && defined(utf8_to_uvchr) - isuni ? utf8_to_uvchr((U8*)pv, &readsize) : +#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) + isuni ? utf8_to_uvchr_buf((U8*)pv, end, &readsize) : #endif (U8)*pv; const U8 c = (U8)u & 0xFF; @@ -203,7 +203,7 @@ pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) void pv_escape_can_unicode() PPCODE: -#if defined(is_utf8_string) && defined(utf8_to_uvchr) +#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) XSRETURN_YES; #else XSRETURN_NO; @@ -252,7 +252,7 @@ pv_display() my $uni = &Devel::PPPort::pv_escape_can_unicode(); # sanity check -ok($uni ? $] >= 5.006 : $] < 5.008); +ok($uni ? "$]" >= 5.006 : "$]" < 5.008); my @r; diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/sv_xpvf b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/sv_xpvf index 3a6c8b0e98f..89612844b4d 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/sv_xpvf +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/sv_xpvf @@ -290,24 +290,24 @@ tie %h, 'Tie::StdHash'; $h{foo} = 'foo-'; $h{bar} = ''; -ok(&Devel::PPPort::vnewSVpvf(), $] >= 5.004 ? 'Perl-42' : '%s-%d'); -ok(&Devel::PPPort::sv_vcatpvf('1-2-3-'), $] >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); -ok(&Devel::PPPort::sv_vsetpvf('1-2-3-'), $] >= 5.004 ? 'Perl-42' : '%s-%d'); +ok(&Devel::PPPort::vnewSVpvf(), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); +ok(&Devel::PPPort::sv_vcatpvf('1-2-3-'), "$]" >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); +ok(&Devel::PPPort::sv_vsetpvf('1-2-3-'), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); &Devel::PPPort::sv_catpvf_mg($h{foo}); -ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42' : 'foo-'); +ok($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42' : 'foo-'); &Devel::PPPort::Perl_sv_catpvf_mg($h{foo}); -ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-'); +ok($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-'); &Devel::PPPort::sv_catpvf_mg_nocontext($h{foo}); -ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); +ok($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); &Devel::PPPort::sv_setpvf_mg($h{bar}); -ok($h{bar}, $] >= 5.004 ? 'mhx-42' : ''); +ok($h{bar}, "$]" >= 5.004 ? 'mhx-42' : ''); &Devel::PPPort::Perl_sv_setpvf_mg($h{bar}); -ok($h{bar}, $] >= 5.004 ? 'foo-43' : ''); +ok($h{bar}, "$]" >= 5.004 ? 'foo-43' : ''); &Devel::PPPort::sv_setpvf_mg_nocontext($h{bar}); -ok($h{bar}, $] >= 5.004 ? 'bar-44' : ''); +ok($h{bar}, "$]" >= 5.004 ? 'bar-44' : ''); diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/uv b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/uv index c1831e9c06a..bb5f19eaaad 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/uv +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/uv @@ -12,10 +12,19 @@ =provides __UNDEFINED__ +my_strnlen SvUOK +utf8_to_uvchr_buf + +=dontwarn + +_ppport_utf8_to_uvchr_buf_callee +_ppport_MIN =implementation +#define _ppport_MIN(a,b) (((a) <= (b)) ? (a) : (b)) + __UNDEFINED__ sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ @@ -48,6 +57,241 @@ __UNDEFINED__ XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_E __UNDEFINED__ PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END __UNDEFINED__ XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END +#if defined UTF8SKIP + +/* Don't use official version because it uses MIN, which may not be available */ +#undef UTF8_SAFE_SKIP + +__UNDEFINED__ UTF8_SAFE_SKIP(s, e) ( \ + ((((e) - (s)) <= 0) \ + ? 0 \ + : _ppport_MIN(((e) - (s)), UTF8SKIP(s)))) +#endif + +#if !defined(my_strnlen) +#if { NEED my_strnlen } + +STRLEN +my_strnlen(const char *str, Size_t maxlen) +{ + const char *p = str; + + while(maxlen-- && *p) + p++; + + return p - str; +} + +#endif +#endif + +#if { VERSION < 5.31.2 } + /* Versions prior to this accepted things that are now considered + * malformations, and didn't return -1 on error with warnings enabled + * */ +# undef utf8_to_uvchr_buf +#endif + +/* This implementation brings modern, generally more restricted standards to + * utf8_to_uvchr_buf. Some of these are security related, and clearly must + * be done. But its arguable that the others need not, and hence should not. + * The reason they're here is that a module that intends to play with the + * latest perls shoud be able to work the same in all releases. An example is + * that perl no longer accepts any UV for a code point, but limits them to + * IV_MAX or below. This is for future internal use of the larger code points. + * If it turns out that some of these changes are breaking code that isn't + * intended to work with modern perls, the tighter restrictions could be + * relaxed. khw thinks this is unlikely, but has been wrong in the past. */ + +#ifndef utf8_to_uvchr_buf + /* Choose which underlying implementation to use. At least one must be + * present or the perl is too early to handle this function */ +# if defined(utf8n_to_uvchr) || defined(utf8_to_uv) +# if defined(utf8n_to_uvchr) /* This is the preferred implementation */ +# define _ppport_utf8_to_uvchr_buf_callee utf8n_to_uvchr +# else +# define _ppport_utf8_to_uvchr_buf_callee utf8_to_uv +# endif + +# endif + +#ifdef _ppport_utf8_to_uvchr_buf_callee +# if { NEED utf8_to_uvchr_buf } + +UV +utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen) +{ + UV ret; + STRLEN curlen; + bool overflows = 0; + const U8 *cur_s = s; + const bool do_warnings = ckWARN_d(WARN_UTF8); + + if (send > s) { + curlen = send - s; + } + else { + assert(0); /* Modern perls die under this circumstance */ + curlen = 0; + if (! do_warnings) { /* Handle empty here if no warnings needed */ + if (retlen) *retlen = 0; + return UNICODE_REPLACEMENT; + } + } + + /* The modern version allows anything that evaluates to a legal UV, but not + * overlongs nor an empty input */ + ret = _ppport_utf8_to_uvchr_buf_callee( + s, curlen, retlen, (UTF8_ALLOW_ANYUV + & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY))); + + /* But actually, modern versions restrict the UV to being no more than what + * an IV can hold */ + if (ret > PERL_INT_MAX) { + overflows = 1; + } + +# if { VERSION < 5.26.0 } +# ifndef EBCDIC + + /* There are bugs in versions earlier than this on non-EBCDIC platforms + * in which it did not detect all instances of overflow, which could be + * a security hole. Also, earlier versions did not allow the overflow + * malformation under any circumstances, and modern ones do. So we + * need to check here. */ + + else if (curlen > 0 && *s >= 0xFE) { + + /* If the main routine detected overflow, great; it returned 0. But if the + * input's first byte indicates it could overflow, we need to verify. + * First, on a 32-bit machine the first byte being at least \xFE + * automatically is overflow */ + if (sizeof(ret) < 8) { + overflows = 1; + } + else { + const U8 highest[] = /* 2*63-1 */ + "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"; + const U8 *cur_h = highest; + + for (cur_s = s; cur_s < send; cur_s++, cur_h++) { + if (UNLIKELY(*cur_s == *cur_h)) { + continue; + } + + /* If this byte is larger than the corresponding highest UTF-8 + * byte, the sequence overflows; otherwise the byte is less than + * (as we handled the equality case above), and so the sequence + * doesn't overflow */ + overflows = *cur_s > *cur_h; + break; + + } + + /* Here, either we set the bool and broke out of the loop, or got + * to the end and all bytes are the same which indicates it doesn't + * overflow. */ + } + } + +# endif +# endif /* < 5.26 */ + + if (UNLIKELY(overflows)) { + if (! do_warnings) { + if (retlen) { + *retlen = _ppport_MIN(*retlen, UTF8SKIP(s)); + *retlen = _ppport_MIN(*retlen, curlen); + } + return UNICODE_REPLACEMENT; + } + else { + + /* On versions that correctly detect overflow, but forbid it + * always, 0 will be returned, but also a warning will have been + * raised. Don't repeat it */ + if (ret != 0) { + /* We use the error message in use from 5.8-5.14 */ + Perl_warner(aTHX_ packWARN(WARN_UTF8), + "Malformed UTF-8 character (overflow at 0x%" UVxf + ", byte 0x%02x, after start byte 0x%02x)", + ret, *cur_s, *s); + } + if (retlen) { + *retlen = (STRLEN) -1; + } + return 0; + } + } + + /* If failed and warnings are off, to emulate the behavior of the real + * utf8_to_uvchr(), try again, allowing anything. (Note a return of 0 is + * ok if the input was '\0') */ + if (UNLIKELY(ret == 0 && (curlen == 0 || *s != '\0'))) { + + /* If curlen is 0, we already handled the case where warnings are + * disabled, so this 'if' will be true, and we won't look at the + * contents of 's' */ + if (do_warnings) { + *retlen = (STRLEN) -1; + } + else { + ret = _ppport_utf8_to_uvchr_buf_callee( + s, curlen, retlen, UTF8_ALLOW_ANY); + /* Override with the REPLACEMENT character, as that is what the + * modern version of this function returns */ + ret = UNICODE_REPLACEMENT; + +# if { VERSION < 5.16.0 } + + /* Versions earlier than this don't necessarily return the proper + * length. It should not extend past the end of string, nor past + * what the first byte indicates the length is, nor past the + * continuation characters */ + if (retlen && *retlen >= 0) { + *retlen = _ppport_MIN(*retlen, curlen); + *retlen = _ppport_MIN(*retlen, UTF8SKIP(s)); + unsigned int i = 1; + do { + if (s[i] < 0x80 || s[i] > 0xBF) { + *retlen = i; + break; + } + } while (++i < *retlen); + } + +# endif + + } + } + + return ret; +} + +# endif +#endif +#endif + +#if defined(UTF8SKIP) && defined(utf8_to_uvchr_buf) +#undef utf8_to_uvchr /* Always redefine this unsafe function so that it refuses + to read past a NUL, making it much less likely to read + off the end of the buffer. A NUL indicates the start + of the next character anyway. If the input isn't + NUL-terminated, the function remains unsafe, as it + always has been. */ + +__UNDEFINED__ utf8_to_uvchr(s, lp) \ + ((*(s) == '\0') \ + ? utf8_to_uvchr_buf(s,((s)+1), lp) /* Handle single NUL specially */ \ + : utf8_to_uvchr_buf(s, (s) + my_strnlen((char *) (s), UTF8SKIP(s)), (lp))) + +#endif + +=xsinit + +#define NEED_my_strnlen +#define NEED_utf8_to_uvchr_buf + =xsubs SV * @@ -108,7 +352,67 @@ XPUSHu() XPUSHu(43); XSRETURN(1); -=tests plan => 10 +STRLEN +UTF8_SAFE_SKIP(s, adjustment) + unsigned char * s + int adjustment + CODE: + /* Instead of passing in an 'e' ptr, use the real end, adjusted */ + RETVAL = UTF8_SAFE_SKIP(s, s + UTF8SKIP(s) + adjustment); + OUTPUT: + RETVAL + +STRLEN +my_strnlen(s, max) + char * s + STRLEN max + CODE: + RETVAL= my_strnlen(s, max); + OUTPUT: + RETVAL + +AV * +utf8_to_uvchr_buf(s, adjustment) + unsigned char *s + int adjustment + PREINIT: + AV *av; + STRLEN len; + CODE: + av = newAV(); + av_push(av, newSVuv(utf8_to_uvchr_buf(s, + s + UTF8SKIP(s) + adjustment, + &len))); + if (len == (STRLEN) -1) { + av_push(av, newSViv(-1)); + } + else { + av_push(av, newSVuv(len)); + } + RETVAL = av; + OUTPUT: + RETVAL + +AV * +utf8_to_uvchr(s) + unsigned char *s + PREINIT: + AV *av; + STRLEN len; + CODE: + av = newAV(); + av_push(av, newSVuv(utf8_to_uvchr(s, &len))); + if (len == (STRLEN) -1) { + av_push(av, newSViv(-1)); + } + else { + av_push(av, newSVuv(len)); + } + RETVAL = av; + OUTPUT: + RETVAL + +=tests plan => 52 ok(&Devel::PPPort::sv_setuv(42), 42); ok(&Devel::PPPort::newSVuv(123), 123); @@ -120,3 +424,116 @@ ok(&Devel::PPPort::SvUVx(0xdeadbeef), 0xdeadbeef); ok(&Devel::PPPort::XSRETURN_UV(), 42); ok(&Devel::PPPort::PUSHu(), 42); ok(&Devel::PPPort::XPUSHu(), 43); +ok(&Devel::PPPort::UTF8_SAFE_SKIP("A", 0), 1); +ok(&Devel::PPPort::UTF8_SAFE_SKIP("A", -1), 0); +ok(&Devel::PPPort::my_strnlen("abc\0def", 7), 3); + +my $ret = &Devel::PPPort::utf8_to_uvchr("A"); +ok($ret->[0], ord("A")); +ok($ret->[1], 1); + +$ret = &Devel::PPPort::utf8_to_uvchr("\0"); +ok($ret->[0], 0); +ok($ret->[1], 1); + +$ret = &Devel::PPPort::utf8_to_uvchr_buf("A", 0); +ok($ret->[0], ord("A")); +ok($ret->[1], 1); + +$ret = &Devel::PPPort::utf8_to_uvchr_buf("\0", 0); +ok($ret->[0], 0); +ok($ret->[1], 1); + +if (ord("A") != 65) { # tests not valid for EBCDIC + ok(1, 1) for 1 .. (2 + 4 + (5 * 5)); +} +else { + $ret = &Devel::PPPort::utf8_to_uvchr_buf("\xc4\x80", 0); + ok($ret->[0], 0x100); + ok($ret->[1], 2); + + my @warnings; + local $SIG{__WARN__} = sub { push @warnings, @_; }; + + { + use warnings 'utf8'; + $ret = &Devel::PPPort::utf8_to_uvchr("\xe0\0\x80"); + ok($ret->[0], 0); + ok($ret->[1], -1); + + no warnings; + $ret = &Devel::PPPort::utf8_to_uvchr("\xe0\0\x80"); + ok($ret->[0], 0xFFFD); + ok($ret->[1], 1); + } + + my @buf_tests = ( + { + input => "A", + adjustment => -1, + warning => qr/empty/, + no_warnings_returned_length => 0, + }, + { + input => "\xc4\xc5", + adjustment => 0, + warning => qr/non-continuation/, + no_warnings_returned_length => 1, + }, + { + input => "\xc4\x80", + adjustment => -1, + warning => qr/short|1 byte, need 2/, + no_warnings_returned_length => 1, + }, + { + input => "\xc0\x81", + adjustment => 0, + warning => qr/overlong|2 bytes, need 1/, + no_warnings_returned_length => 2, + }, + { # Old algorithm supposedly failed to detect this + input => "\xff\x80\x90\x90\x90\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf", + adjustment => 0, + warning => qr/overflow/, + no_warnings_returned_length => 13, + }, + ); + + # An empty input is an assertion failure on debugging builds. It is + # deliberately the first test. + require Config; import Config; + use vars '%Config'; + if ($Config{ccflags} =~ /-DDEBUGGING/) { + shift @buf_tests; + ok(1, 1) for 1..5; + } + + for my $test (@buf_tests) { + my $input = $test->{'input'}; + my $adjustment = $test->{'adjustment'}; + my $display = 'utf8_to_uvchr_buf("'; + for (my $i = 0; $i < length($input) + $adjustment; $i++) { + $display .= sprintf "\\x%02x", ord substr($input, $i, 1); + } + + $display .= '")'; + my $warning = $test->{'warning'}; + + undef @warnings; + use warnings 'utf8'; + $ret = &Devel::PPPort::utf8_to_uvchr_buf($input, $adjustment); + ok($ret->[0], 0, "returned value $display; warnings enabled"); + ok($ret->[1], -1, "returned length $display; warnings enabled"); + my $all_warnings = join "; ", @warnings; + my $contains = grep { $_ =~ $warning } $all_warnings; + ok($contains, 1, $display . "; '$all_warnings' contains '$warning'"); + + undef @warnings; + no warnings 'utf8'; + $ret = &Devel::PPPort::utf8_to_uvchr_buf($input, $adjustment); + ok($ret->[0], 0xFFFD, "returned value $display; warnings disabled"); + ok($ret->[1], $test->{'no_warnings_returned_length'}, + "returned length $display; warnings disabled"); + } +} diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/variables b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/variables index afa53a68332..83dd5e83081 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/variables +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/variables @@ -441,7 +441,7 @@ ok(!&Devel::PPPort::PL_sv_no()); ok(&Devel::PPPort::PL_na("abcd"), 4); ok(&Devel::PPPort::PL_Sv(), "mhx"); ok(defined &Devel::PPPort::PL_tokenbuf()); -ok($] >= 5.009005 || &Devel::PPPort::PL_parser()); +ok("$]" >= 5.009005 || &Devel::PPPort::PL_parser()); ok(&Devel::PPPort::PL_hexdigit() =~ /^[0-9a-zA-Z]+$/); ok(defined &Devel::PPPort::PL_hints()); ok(&Devel::PPPort::PL_ppaddr("mhx"), "MHX"); @@ -457,7 +457,7 @@ for (&Devel::PPPort::other_variables()) { local $SIG{'__WARN__'} = sub { push @w, @_ }; ok(&Devel::PPPort::dummy_parser_warning()); } - if ($] >= 5.009005) { + if ("$]" >= 5.009005) { ok(@w >= 0); for (@w) { print "# $_"; @@ -473,11 +473,11 @@ for (&Devel::PPPort::other_variables()) { ok($fail, 0); } -ok(&Devel::PPPort::no_dummy_parser_vars(1) >= ($] < 5.009005 ? 1 : 0)); +ok(&Devel::PPPort::no_dummy_parser_vars(1) >= ("$]" < 5.009005 ? 1 : 0)); eval { &Devel::PPPort::no_dummy_parser_vars(0) }; -if ($] < 5.009005) { +if ("$]" < 5.009005) { ok($@, ''); } else { diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/warn b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/warn index 8f8f8ff337f..b4a5695f8ff 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/warn +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/inc/warn @@ -147,15 +147,15 @@ $SIG{'__WARN__'} = sub { $warning = $_[0] }; $warning = ''; Devel::PPPort::warner(); -ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::Perl_warner(); -ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::Perl_warner_nocontext(); -ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::ckWARN(); @@ -165,4 +165,4 @@ $^W = 1; $warning = ''; Devel::PPPort::ckWARN(); -ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/ppptools.pl b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/ppptools.pl index 62e533909d9..e84f646328f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/ppptools.pl +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/ppptools.pl @@ -306,6 +306,7 @@ sub parse_embed my @e = split /\s*\|\s*/, $line; if( @e >= 3 ) { my($flags, $ret, $name, @args) = @e; + next if $flags =~ /[DM]/; # Skip entries marked as deprecated or unstable if ($name =~ /^[^\W\d]\w*$/) { for (@args) { $_ = [trim_arg($_)]; @@ -379,7 +380,7 @@ sub parse_version if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { return ($1, $2, $3); } - elsif ($ver !~ /^\d+\.[\d_]+$/) { + elsif ($ver !~ /^\d+\.\d{3}(?:_\d{2})?$/) { die "cannot parse version '$ver'\n"; } diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5005000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5005000 index e27a06dc8f2..df29b0291b8 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5005000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5005000 @@ -9,7 +9,6 @@ fbm_instr # E (Perl_fbm_instr) get_op_descs # U get_op_names # U init_stacks # U -mg_length # U mg_size # U newHVhv # U new_stackinfo # E diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006000 index 6c0acac231a..2d953314888 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006000 @@ -46,49 +46,6 @@ dump_vindent # U get_context # U get_ppaddr # E gv_dump # U -init_i18nl10n # U (perl_init_i18nl10n) -init_i18nl14n # U (perl_init_i18nl14n) -is_uni_alnum # U -is_uni_alnum_lc # U -is_uni_alpha # U -is_uni_alpha_lc # U -is_uni_ascii # U -is_uni_ascii_lc # U -is_uni_cntrl # U -is_uni_cntrl_lc # U -is_uni_digit # U -is_uni_digit_lc # U -is_uni_graph # U -is_uni_graph_lc # U -is_uni_idfirst # U -is_uni_idfirst_lc # U -is_uni_lower # U -is_uni_lower_lc # U -is_uni_print # U -is_uni_print_lc # U -is_uni_punct # U -is_uni_punct_lc # U -is_uni_space # U -is_uni_space_lc # U -is_uni_upper # U -is_uni_upper_lc # U -is_uni_xdigit # U -is_uni_xdigit_lc # U -is_utf8_alnum # U -is_utf8_alpha # U -is_utf8_ascii # U -is_utf8_char # U -is_utf8_cntrl # U -is_utf8_digit # U -is_utf8_graph # U -is_utf8_idfirst # U -is_utf8_lower # U -is_utf8_mark # U -is_utf8_print # U -is_utf8_punct # U -is_utf8_space # U -is_utf8_upper # U -is_utf8_xdigit # U magic_dump # U my_atof # U my_fflush_all # U @@ -96,9 +53,6 @@ newANONATTRSUB # U newATTRSUB # U newXS # E (Perl_newXS) newXSproto # E -new_collate # U (perl_new_collate) -new_ctype # U (perl_new_ctype) -new_numeric # U (perl_new_numeric) op_dump # U perl_parse # E (perl_parse) pmop_dump # U @@ -135,16 +89,11 @@ sv_pvutf8 # U sv_pvutf8n # U sv_pvutf8n_force # U sv_rvweaken # U -sv_utf8_decode # U -sv_utf8_downgrade # U sv_utf8_encode # U -swash_init # U -to_uni_lower_lc # U -to_uni_title_lc # U -to_uni_upper_lc # U utf8_distance # U utf8_hop # U vcroak # U vform # U +vmess # U vwarn # U vwarner # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006001 index 3f4ea792ffc..67fae3010cb 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5006001 @@ -1,11 +1,8 @@ 5.006001 SvGAMAGIC # U -apply_attrs_string # U -bytes_to_utf8 # U gv_efullname4 # U gv_fullname4 # U is_utf8_string # U save_generic_pvref # U utf16_to_utf8 # E (Perl_utf16_to_utf8) utf16_to_utf8_reversed # E (Perl_utf16_to_utf8_reversed) -utf8_to_bytes # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007001 index cee6dec8451..50909c3ec22 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007001 @@ -1,8 +1,5 @@ 5.007001 -ASCII_TO_NEED # U -NATIVE_TO_NEED # U POPpbytex # E -bytes_from_utf8 # U despatch_signals # U do_openn # U gv_handler # U @@ -15,8 +12,6 @@ sv_setref_uv # U sv_unref_flags # U sv_utf8_upgrade # E (Perl_sv_utf8_upgrade) utf8_length # U -utf8_to_uvchr # U -utf8_to_uvuni # U utf8n_to_uvchr # U utf8n_to_uvuni # U uvchr_to_utf8 # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007002 index cb28d72bf3d..40e6b5a6f69 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007002 @@ -14,4 +14,3 @@ sv_catsv_flags # U sv_setsv_flags # U sv_utf8_upgrade_flags # U sv_utf8_upgrade_nomg # U -swash_fetch # E (Perl_swash_fetch) diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007003 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007003 index c9e1cea6eb4..89a05a0adcb 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007003 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5007003 @@ -49,11 +49,6 @@ sv_nolocking # U sv_nosharing # U sv_recode_to_utf8 # U sv_uni_display # U -to_uni_fold # U -to_uni_lower # E (Perl_to_uni_lower) -to_uni_title # E (Perl_to_uni_title) -to_uni_upper # E (Perl_to_uni_upper) -to_utf8_case # U unpack_str # U uvchr_to_utf8_flags # U uvuni_to_utf8_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008000 index 3a4d23ec74d..e3ee16f6ba2 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008000 @@ -1,6 +1,3 @@ 5.008000 HeUTF8 # U -hv_iternext_flags # U -hv_store_flags # U -is_utf8_idcont # U nothreadhook # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008001 index adb1eb327cb..c600b203f90 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5008001 @@ -8,7 +8,6 @@ is_utf8_string_loc # U packlist # U pad_add_anon # U pad_new # E -pad_tidy # E save_bool # U savestack_grow_cnt # U seed # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009002 index 5678492aef9..231f0575880 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009002 @@ -1,6 +1,5 @@ 5.009002 SvPVbyte_force # U -find_rundefsvoffset # U op_refcnt_lock # U op_refcnt_unlock # U savesvpv # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009004 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009004 index 6295708cd65..12714addf86 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009004 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009004 @@ -3,7 +3,5 @@ PerlIO_context_layers # U gv_name_set # U hv_copy_hints_hv # U my_vsnprintf # U -newXS_flags # U -regclass_swash # E (Perl_regclass_swash) sv_does # U sv_usepvn_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009005 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009005 index a8ee73b1c94..9bc974fc2fd 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009005 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5009005 @@ -1,14 +1,9 @@ 5.009005 -Perl_signbit # U -av_create_and_push # U -av_create_and_unshift_one # U gv_fetchfile_flags # U -lex_start # E (Perl_lex_start) mro_get_linear_isa # U mro_method_changed_in # U my_dirfd # U pregcomp # E (Perl_pregcomp) -ptr_table_clear # U ptr_table_fetch # U ptr_table_free # U ptr_table_new # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011001 index f42409363b7..28a8d5b15ae 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011001 @@ -1,6 +1,3 @@ 5.011001 ck_warner # U ck_warner_d # U -is_utf8_perl_space # U -is_utf8_perl_word # U -is_utf8_posix_digit # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011002 index df12d99fd62..910a552fe4f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5011002 @@ -1,13 +1,2 @@ 5.011002 PL_keyword_plugin # E -lex_bufutf8 # U -lex_discard_to # U -lex_grow_linestr # U -lex_next_chunk # U -lex_peek_unichar # U -lex_read_space # U -lex_read_to # U -lex_read_unichar # U -lex_stuff_pvn # U -lex_stuff_sv # U -lex_unstuff # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013005 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013005 index e9cd3e8b5f8..dd4730ed7e5 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013005 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013005 @@ -2,4 +2,3 @@ PL_rpeepp # E isOCTAL # U lex_stuff_pvs # U -parse_fullstmt # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013006 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013006 index d145f368393..596c1ade2dc 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013006 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013006 @@ -7,7 +7,6 @@ ck_entersub_args_proto_or_list # U cv_get_call_checker # E cv_set_call_checker # E isWORDCHAR # U -lex_stuff_pv # U mg_free_type # U newSVpv_share # U op_append_elem # U @@ -15,7 +14,6 @@ op_append_list # U op_contextualize # U op_linklist # U op_prepend_elem # U -parse_stmtseq # U rv2cv_op_cv # U savesharedpvs # U savesharedsvpv # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013007 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013007 index c70717f6a5e..2131264e1f1 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013007 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013007 @@ -28,8 +28,3 @@ custom_op_register # E custom_op_xop # E newFOROP # A newWHILEOP # A -op_lvalue # U -op_scope # U -parse_barestmt # U -parse_block # U -parse_label # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013008 index 8e95c5d3133..8716748190c 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013008 @@ -1,6 +1,2 @@ 5.013008 foldEQ_latin1 # U -parse_arithexpr # U -parse_fullexpr # U -parse_listexpr # U -parse_termexpr # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013010 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013010 index d7f4365bfb1..467ea464b50 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013010 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5013010 @@ -1,4 +1 @@ 5.013010 -foldEQ_utf8_flags # U -is_utf8_xidcont # U -is_utf8_xidfirst # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5014000 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5014000 index 3f837ef4d0d..cfe78226fea 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5014000 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5014000 @@ -1,2 +1 @@ 5.014000 -_to_uni_fold_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015001 index 144926b1244..c886418516e 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015001 @@ -1,6 +1,4 @@ 5.015001 -cop_fetch_label # U -cop_store_label # U pad_add_name_pv # U pad_add_name_pvn # U pad_add_name_pvs # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015004 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015004 index d92eabc6738..dd2360db89c 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015004 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015004 @@ -12,9 +12,6 @@ gv_fetchmeth_pvn # U gv_fetchmeth_pvn_autoload # U gv_fetchmeth_sv # U gv_fetchmeth_sv_autoload # U -gv_fetchmethod_pv_flags # U -gv_fetchmethod_pvn_flags # U -gv_fetchmethod_sv_flags # U gv_init_pv # U gv_init_sv # U newGVgen_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015009 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015009 index 30537f0445e..12e4d6de751 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015009 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5015009 @@ -1,5 +1,2 @@ 5.015009 utf8_to_uvchr_buf # U -utf8_to_uvuni_buf # U -valid_utf8_to_uvchr # U -valid_utf8_to_uvuni # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017002 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017002 index fd825e14bcd..e8638dce32f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017002 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017002 @@ -1,7 +1,4 @@ 5.017002 -is_uni_blank # U -is_uni_blank_lc # U -is_utf8_blank # U sv_copypv_flags # U sv_copypv_nomg # U sv_vcatpvfn_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017007 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017007 index c95c23505f2..6d97dffafdd 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017007 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017007 @@ -1,7 +1,2 @@ 5.017007 SvREFCNT_dec_NN # U -_is_uni_perl_idstart # U -_is_utf8_perl_idstart # U -is_uni_alnumc # U -is_uni_alnumc_lc # U -is_utf8_alnumc # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017008 index 9228a1506d0..de67457e79e 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5017008 @@ -1,8 +1,3 @@ 5.017008 -_is_uni_FOO # U -_is_uni_perl_idcont # U -_is_utf8_FOO # U -_is_utf8_mark # U -_is_utf8_perl_idcont # U isALPHANUMERIC # U isIDCONT # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019004 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019004 index 1aa2023c9f7..a24caa7e92b 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019004 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019004 @@ -1,4 +1,3 @@ 5.019004 -append_utf8_from_native_byte # U is_safe_syscall # U uvoffuni_to_utf8_flags # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019009 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019009 index 7706f723a00..d6ccc505670 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019009 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5019009 @@ -1,5 +1 @@ 5.019009 -_to_utf8_fold_flags # A -_to_utf8_lower_flags # A -_to_utf8_title_flags # A -_to_utf8_upper_flags # A diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021001 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021001 index 6e66213f6ea..07868ed191a 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021001 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021001 @@ -1,12 +1,3 @@ 5.021001 -_is_in_locale_category # U -_is_utf8_char_slow # U -_is_utf8_idcont # U -_is_utf8_idstart # U -_is_utf8_xidcont # U -_is_utf8_xidstart # U -isALNUM_lazy # U -isIDFIRST_lazy # U isUTF8_CHAR # U markstack_grow # E (Perl_markstack_grow) -my_strerror # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021007 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021007 index 6b8b9ba7072..1aa1e34daf3 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021007 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021007 @@ -1,9 +1,4 @@ 5.021007 PadnameUTF8 # E is_invariant_string # U -newPADNAMELIST # U -newPADNAMEouter # U -newPADNAMEpvn # U newUNOP_AUX # E -padnamelist_fetch # U -padnamelist_store # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021008 index ccba00cb34d..06633eebc67 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5021008 @@ -1,2 +1 @@ 5.021008 -sv_get_backrefs # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5023008 b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5023008 index ed2ef6d2eb0..91f61649612 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5023008 +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/parts/todo/5023008 @@ -1,22 +1,2 @@ 5.023008 clear_defarray # U -cx_popblock # U -cx_popeval # U -cx_popformat # U -cx_popgiven # U -cx_poploop # U -cx_popsub # U -cx_popsub_args # U -cx_popsub_common # U -cx_popwhen # U -cx_pushblock # U -cx_pusheval # U -cx_pushformat # U -cx_pushgiven # U -cx_pushloop_for # U -cx_pushloop_plain # U -cx_pushsub # U -cx_pushwhen # U -cx_topblock # U -leave_adjust_stacks # U -savetmps # U diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/cop.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/cop.t index 1677dee79aa..1a981cbe748 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/cop.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/cop.t @@ -61,7 +61,7 @@ print "# $file\n"; ok($file =~ /cop/i); BEGIN { - if ($] < 5.006000) { + if ("$]" < 5.006000) { # Skip for (1..28) { ok(1, 1); diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/magic.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/magic.t index f467613f27d..ed74dff717f 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/magic.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/magic.t @@ -110,8 +110,8 @@ ok($h{sv}, 'Perl'); # v1 is treated as a bareword in older perls... my $ver = do { local $SIG{'__WARN__'} = sub {}; eval qq[v1.2.0] }; -ok($] < 5.009 || $@ eq ''); -ok($] < 5.009 || Devel::PPPort::SvVSTRING_mg($ver)); +ok("$]" < 5.009 || $@ eq ''); +ok("$]" < 5.009 || Devel::PPPort::SvVSTRING_mg($ver)); ok(!Devel::PPPort::SvVSTRING_mg(4711)); my $foo = 'bar'; diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/misc.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/misc.t index 0c4f027380e..7fbd3e9c8f0 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/misc.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/misc.t @@ -30,9 +30,9 @@ BEGIN { require 'testutil.pl' if $@; } - if (48) { + if (128) { load(); - plan(tests => 48); + plan(tests => 128); } } @@ -57,7 +57,7 @@ $_ = "Fred"; ok(&Devel::PPPort::DEFSV(), "Fred"); ok(&Devel::PPPort::UNDERBAR(), "Fred"); -if ($] >= 5.009002 && $] < 5.023 && $] < 5.023004) { +if ("$]" >= 5.009002 && "$]" < 5.023 && "$]" < 5.023004) { eval q{ no warnings "deprecated"; no if $^V > v5.17.9, warnings => "experimental::lexical_topic"; @@ -120,8 +120,8 @@ ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2'); ok(Devel::PPPort::PERL_ABS(42), 42); ok(Devel::PPPort::PERL_ABS(-13), 13); -ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42'); -ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc'); +ok(Devel::PPPort::SVf(42), "$]" >= 5.004 ? '[42]' : '42'); +ok(Devel::PPPort::SVf('abc'), "$]" >= 5.004 ? '[abc]' : 'abc'); ok(&Devel::PPPort::Perl_ppaddr_t("FOO"), "foo"); @@ -129,7 +129,7 @@ ok(&Devel::PPPort::ptrtests(), 63); ok(&Devel::PPPort::OpSIBLING_tests(), 0); -if ($] >= 5.009000) { +if ("$]" >= 5.009000) { eval q{ ok(&Devel::PPPort::check_HeUTF8("hello"), "norm"); ok(&Devel::PPPort::check_HeUTF8("\N{U+263a}"), "utf8"); @@ -146,7 +146,7 @@ ok($r[1], "13"); ok(!Devel::PPPort::SvRXOK("")); ok(!Devel::PPPort::SvRXOK(bless [], "Regexp")); -if ($] < 5.005) { +if ("$]" < 5.005) { skip 'no qr// objects in this perl', 0; skip 'no qr// objects in this perl', 0; } else { @@ -155,3 +155,132 @@ if ($] < 5.005) { ok(Devel::PPPort::SvRXOK(bless $qr, "Surprise")); } +ok( Devel::PPPort::test_isBLANK(ord(" "))); +ok(! Devel::PPPort::test_isBLANK(ord("\n"))); + +ok( Devel::PPPort::test_isBLANK_A(ord("\t"))); +ok(! Devel::PPPort::test_isBLANK_A(ord("\r"))); + +ok( Devel::PPPort::test_isUPPER(ord("A"))); +ok(! Devel::PPPort::test_isUPPER(ord("a"))); + +ok( Devel::PPPort::test_isUPPER_A(ord("Z"))); + +# One of these two is uppercase in EBCDIC; the other in Latin1, but neither are +# ASCII uppercase. +ok(! Devel::PPPort::test_isUPPER_A(ord(0xDC))); +ok(! Devel::PPPort::test_isUPPER_A(ord(0xFC))); + +ok( Devel::PPPort::test_isLOWER(ord("b"))); +ok(! Devel::PPPort::test_isLOWER(ord("B"))); + +ok( Devel::PPPort::test_isLOWER_A(ord("y"))); + +# One of these two is lowercase in EBCDIC; the other in Latin1, but neither are +# ASCII lowercase. +ok(! Devel::PPPort::test_isLOWER_A(ord(0xDC))); +ok(! Devel::PPPort::test_isLOWER_A(ord(0xFC))); + +ok( Devel::PPPort::test_isALPHA(ord("C"))); +ok(! Devel::PPPort::test_isALPHA(ord("1"))); + +ok( Devel::PPPort::test_isALPHA_A(ord("x"))); +ok(! Devel::PPPort::test_isALPHA_A(0xDC)); + +ok( Devel::PPPort::test_isWORDCHAR(ord("_"))); +ok(! Devel::PPPort::test_isWORDCHAR(ord("@"))); + +ok( Devel::PPPort::test_isWORDCHAR_A(ord("2"))); +ok(! Devel::PPPort::test_isWORDCHAR_A(0xFC)); + +ok( Devel::PPPort::test_isALPHANUMERIC(ord("4"))); +ok(! Devel::PPPort::test_isALPHANUMERIC(ord("_"))); + +ok( Devel::PPPort::test_isALPHANUMERIC_A(ord("l"))); +ok(! Devel::PPPort::test_isALPHANUMERIC_A(0xDC)); + +ok( Devel::PPPort::test_isALNUM(ord("c"))); +ok(! Devel::PPPort::test_isALNUM(ord("}"))); + +ok( Devel::PPPort::test_isALNUM_A(ord("5"))); +ok(! Devel::PPPort::test_isALNUM_A(0xFC)); + +ok( Devel::PPPort::test_isDIGIT(ord("6"))); +ok(! Devel::PPPort::test_isDIGIT(ord("_"))); + +ok( Devel::PPPort::test_isDIGIT_A(ord("7"))); +ok(! Devel::PPPort::test_isDIGIT_A(0xDC)); + +ok( Devel::PPPort::test_isOCTAL(ord("7"))); +ok(! Devel::PPPort::test_isOCTAL(ord("8"))); + +ok( Devel::PPPort::test_isOCTAL_A(ord("0"))); +ok(! Devel::PPPort::test_isOCTAL_A(ord("9"))); + +ok( Devel::PPPort::test_isIDFIRST(ord("D"))); +ok(! Devel::PPPort::test_isIDFIRST(ord("1"))); + +ok( Devel::PPPort::test_isIDFIRST_A(ord("_"))); +ok(! Devel::PPPort::test_isIDFIRST_A(0xFC)); + +ok( Devel::PPPort::test_isIDCONT(ord("e"))); +ok(! Devel::PPPort::test_isIDCONT(ord("@"))); + +ok( Devel::PPPort::test_isIDCONT_A(ord("2"))); +ok(! Devel::PPPort::test_isIDCONT_A(0xDC)); + +ok( Devel::PPPort::test_isSPACE(ord(" "))); +ok(! Devel::PPPort::test_isSPACE(ord("_"))); + +ok( Devel::PPPort::test_isSPACE_A(ord("\cK"))); +ok(! Devel::PPPort::test_isSPACE_A(ord("F"))); + +# This stresses the edge for ASCII machines, but happens to work on EBCDIC as +# well +ok( Devel::PPPort::test_isASCII(0x7F)); +ok(! Devel::PPPort::test_isASCII(0x80)); + +ok( Devel::PPPort::test_isASCII_A(ord("9"))); + +# B6 is the PARAGRAPH SIGN in ASCII and EBCDIC +ok(! Devel::PPPort::test_isASCII_A(0xB6)); + +ok( Devel::PPPort::test_isCNTRL(ord("\e"))); +ok(! Devel::PPPort::test_isCNTRL(ord(" "))); + +ok( Devel::PPPort::test_isCNTRL_A(ord("\a"))); +ok(! Devel::PPPort::test_isCNTRL_A(0xB6)); + +ok( Devel::PPPort::test_isPRINT(ord(" "))); +ok(! Devel::PPPort::test_isPRINT(ord("\n"))); + +ok( Devel::PPPort::test_isPRINT_A(ord("G"))); +ok(! Devel::PPPort::test_isPRINT_A(0xB6)); + +ok( Devel::PPPort::test_isGRAPH(ord("h"))); +ok(! Devel::PPPort::test_isGRAPH(ord(" "))); + +ok( Devel::PPPort::test_isGRAPH_A(ord("i"))); +ok(! Devel::PPPort::test_isGRAPH_A(0xB6)); + +ok( Devel::PPPort::test_isPUNCT(ord("#"))); +ok(! Devel::PPPort::test_isPUNCT(ord(" "))); + +ok( Devel::PPPort::test_isPUNCT_A(ord("*"))); +ok(! Devel::PPPort::test_isPUNCT_A(0xB6)); + +ok( Devel::PPPort::test_isXDIGIT(ord("A"))); +ok(! Devel::PPPort::test_isXDIGIT(ord("_"))); + +ok( Devel::PPPort::test_isXDIGIT_A(ord("9"))); +ok(! Devel::PPPort::test_isXDIGIT_A(0xDC)); + +ok( Devel::PPPort::test_isPSXSPC(ord(" "))); +ok(! Devel::PPPort::test_isPSXSPC(ord("k"))); + +ok( Devel::PPPort::test_isPSXSPC_A(ord("\cK"))); +ok(! Devel::PPPort::test_isPSXSPC_A(0xFC)); + +ok(&Devel::PPPort::av_top_index([1,2,3]), 2); +ok(&Devel::PPPort::av_tindex([1,2,3,4]), 3); + diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/newSVpv.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/newSVpv.t index d14a53fbe89..e9fee35179d 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/newSVpv.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/newSVpv.t @@ -68,7 +68,7 @@ ok(!defined($s[4])); ok(@s == 1); ok($s[0], "test"); -if ($] >= 5.008001) { +if ("$]" >= 5.008001) { require utf8; ok(utf8::is_utf8($s[0])); } diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/ppphtest.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/ppphtest.t index 90d7d24ab82..af2db3f43ae 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/ppphtest.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/ppphtest.t @@ -112,7 +112,8 @@ ok(Devel::PPPort::GetFileContents(), $data); sub comment { my $c = shift; - $c =~ s/^/# | /mg; + my $x = 0; + $c =~ s/^/sprintf("# %2d| ", ++$x)/meg; $c .= "\n" unless $c =~ /[\r\n]$/; print $c; } @@ -191,14 +192,12 @@ for $t (@tests) { open F, ">$f" or die "open $f: $!\n"; print F "$txt\n"; close F; - $txt =~ s/^/# | /mg; - print "# *** writing $f ***\n$txt\n"; + print "# *** writing $f ***\n"; + comment($txt); } - my $code = $t->{code}; - $code =~ s/^/# | /mg; - - print "# *** evaluating test code ***\n$code\n"; + print "# *** evaluating test code ***\n"; + comment($t->{code}); eval $t->{code}; if ($@) { diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/pv_tools.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/pv_tools.t index c4e54809578..f79a15aa58b 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/pv_tools.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/pv_tools.t @@ -51,7 +51,7 @@ package main; my $uni = &Devel::PPPort::pv_escape_can_unicode(); # sanity check -ok($uni ? $] >= 5.006 : $] < 5.008); +ok($uni ? "$]" >= 5.006 : "$]" < 5.008); my @r; diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/sv_xpvf.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/sv_xpvf.t index 15074317df0..40919863a84 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/sv_xpvf.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/sv_xpvf.t @@ -54,25 +54,25 @@ tie %h, 'Tie::StdHash'; $h{foo} = 'foo-'; $h{bar} = ''; -ok(&Devel::PPPort::vnewSVpvf(), $] >= 5.004 ? 'Perl-42' : '%s-%d'); -ok(&Devel::PPPort::sv_vcatpvf('1-2-3-'), $] >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); -ok(&Devel::PPPort::sv_vsetpvf('1-2-3-'), $] >= 5.004 ? 'Perl-42' : '%s-%d'); +ok(&Devel::PPPort::vnewSVpvf(), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); +ok(&Devel::PPPort::sv_vcatpvf('1-2-3-'), "$]" >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d'); +ok(&Devel::PPPort::sv_vsetpvf('1-2-3-'), "$]" >= 5.004 ? 'Perl-42' : '%s-%d'); &Devel::PPPort::sv_catpvf_mg($h{foo}); -ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42' : 'foo-'); +ok($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42' : 'foo-'); &Devel::PPPort::Perl_sv_catpvf_mg($h{foo}); -ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-'); +ok($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-'); &Devel::PPPort::sv_catpvf_mg_nocontext($h{foo}); -ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); +ok($h{foo}, "$]" >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-'); &Devel::PPPort::sv_setpvf_mg($h{bar}); -ok($h{bar}, $] >= 5.004 ? 'mhx-42' : ''); +ok($h{bar}, "$]" >= 5.004 ? 'mhx-42' : ''); &Devel::PPPort::Perl_sv_setpvf_mg($h{bar}); -ok($h{bar}, $] >= 5.004 ? 'foo-43' : ''); +ok($h{bar}, "$]" >= 5.004 ? 'foo-43' : ''); &Devel::PPPort::sv_setpvf_mg_nocontext($h{bar}); -ok($h{bar}, $] >= 5.004 ? 'bar-44' : ''); +ok($h{bar}, "$]" >= 5.004 ? 'bar-44' : ''); diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/uv.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/uv.t index bc123c6bbf7..7f5d78b9e40 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/uv.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/uv.t @@ -30,9 +30,9 @@ BEGIN { require 'testutil.pl' if $@; } - if (10) { + if (52) { load(); - plan(tests => 10); + plan(tests => 52); } } @@ -58,4 +58,117 @@ ok(&Devel::PPPort::SvUVx(0xdeadbeef), 0xdeadbeef); ok(&Devel::PPPort::XSRETURN_UV(), 42); ok(&Devel::PPPort::PUSHu(), 42); ok(&Devel::PPPort::XPUSHu(), 43); +ok(&Devel::PPPort::UTF8_SAFE_SKIP("A", 0), 1); +ok(&Devel::PPPort::UTF8_SAFE_SKIP("A", -1), 0); +ok(&Devel::PPPort::my_strnlen("abc\0def", 7), 3); + +my $ret = &Devel::PPPort::utf8_to_uvchr("A"); +ok($ret->[0], ord("A")); +ok($ret->[1], 1); + +$ret = &Devel::PPPort::utf8_to_uvchr("\0"); +ok($ret->[0], 0); +ok($ret->[1], 1); + +$ret = &Devel::PPPort::utf8_to_uvchr_buf("A", 0); +ok($ret->[0], ord("A")); +ok($ret->[1], 1); + +$ret = &Devel::PPPort::utf8_to_uvchr_buf("\0", 0); +ok($ret->[0], 0); +ok($ret->[1], 1); + +if (ord("A") != 65) { # tests not valid for EBCDIC + ok(1, 1) for 1 .. (2 + 4 + (5 * 5)); +} +else { + $ret = &Devel::PPPort::utf8_to_uvchr_buf("\xc4\x80", 0); + ok($ret->[0], 0x100); + ok($ret->[1], 2); + + my @warnings; + local $SIG{__WARN__} = sub { push @warnings, @_; }; + + { + use warnings 'utf8'; + $ret = &Devel::PPPort::utf8_to_uvchr("\xe0\0\x80"); + ok($ret->[0], 0); + ok($ret->[1], -1); + + no warnings; + $ret = &Devel::PPPort::utf8_to_uvchr("\xe0\0\x80"); + ok($ret->[0], 0xFFFD); + ok($ret->[1], 1); + } + + my @buf_tests = ( + { + input => "A", + adjustment => -1, + warning => qr/empty/, + no_warnings_returned_length => 0, + }, + { + input => "\xc4\xc5", + adjustment => 0, + warning => qr/non-continuation/, + no_warnings_returned_length => 1, + }, + { + input => "\xc4\x80", + adjustment => -1, + warning => qr/short|1 byte, need 2/, + no_warnings_returned_length => 1, + }, + { + input => "\xc0\x81", + adjustment => 0, + warning => qr/overlong|2 bytes, need 1/, + no_warnings_returned_length => 2, + }, + { # Old algorithm supposedly failed to detect this + input => "\xff\x80\x90\x90\x90\xbf\xbf\xbf\xbf\xbf\xbf\xbf\xbf", + adjustment => 0, + warning => qr/overflow/, + no_warnings_returned_length => 13, + }, + ); + + # An empty input is an assertion failure on debugging builds. It is + # deliberately the first test. + require Config; import Config; + use vars '%Config'; + if ($Config{ccflags} =~ /-DDEBUGGING/) { + shift @buf_tests; + ok(1, 1) for 1..5; + } + + for my $test (@buf_tests) { + my $input = $test->{'input'}; + my $adjustment = $test->{'adjustment'}; + my $display = 'utf8_to_uvchr_buf("'; + for (my $i = 0; $i < length($input) + $adjustment; $i++) { + $display .= sprintf "\\x%02x", ord substr($input, $i, 1); + } + + $display .= '")'; + my $warning = $test->{'warning'}; + + undef @warnings; + use warnings 'utf8'; + $ret = &Devel::PPPort::utf8_to_uvchr_buf($input, $adjustment); + ok($ret->[0], 0, "returned value $display; warnings enabled"); + ok($ret->[1], -1, "returned length $display; warnings enabled"); + my $all_warnings = join "; ", @warnings; + my $contains = grep { $_ =~ $warning } $all_warnings; + ok($contains, 1, $display . "; '$all_warnings' contains '$warning'"); + + undef @warnings; + no warnings 'utf8'; + $ret = &Devel::PPPort::utf8_to_uvchr_buf($input, $adjustment); + ok($ret->[0], 0xFFFD, "returned value $display; warnings disabled"); + ok($ret->[1], $test->{'no_warnings_returned_length'}, + "returned length $display; warnings disabled"); + } +} diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/variables.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/variables.t index ef1ac8b20d3..55da5a80250 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/variables.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/variables.t @@ -56,7 +56,7 @@ ok(!&Devel::PPPort::PL_sv_no()); ok(&Devel::PPPort::PL_na("abcd"), 4); ok(&Devel::PPPort::PL_Sv(), "mhx"); ok(defined &Devel::PPPort::PL_tokenbuf()); -ok($] >= 5.009005 || &Devel::PPPort::PL_parser()); +ok("$]" >= 5.009005 || &Devel::PPPort::PL_parser()); ok(&Devel::PPPort::PL_hexdigit() =~ /^[0-9a-zA-Z]+$/); ok(defined &Devel::PPPort::PL_hints()); ok(&Devel::PPPort::PL_ppaddr("mhx"), "MHX"); @@ -72,7 +72,7 @@ for (&Devel::PPPort::other_variables()) { local $SIG{'__WARN__'} = sub { push @w, @_ }; ok(&Devel::PPPort::dummy_parser_warning()); } - if ($] >= 5.009005) { + if ("$]" >= 5.009005) { ok(@w >= 0); for (@w) { print "# $_"; @@ -88,11 +88,11 @@ for (&Devel::PPPort::other_variables()) { ok($fail, 0); } -ok(&Devel::PPPort::no_dummy_parser_vars(1) >= ($] < 5.009005 ? 1 : 0)); +ok(&Devel::PPPort::no_dummy_parser_vars(1) >= ("$]" < 5.009005 ? 1 : 0)); eval { &Devel::PPPort::no_dummy_parser_vars(0) }; -if ($] < 5.009005) { +if ("$]" < 5.009005) { ok($@, ''); } else { diff --git a/gnu/usr.bin/perl/dist/Devel-PPPort/t/warn.t b/gnu/usr.bin/perl/dist/Devel-PPPort/t/warn.t index d538055a65a..33900e9e068 100644 --- a/gnu/usr.bin/perl/dist/Devel-PPPort/t/warn.t +++ b/gnu/usr.bin/perl/dist/Devel-PPPort/t/warn.t @@ -56,15 +56,15 @@ $SIG{'__WARN__'} = sub { $warning = $_[0] }; $warning = ''; Devel::PPPort::warner(); -ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::Perl_warner(); -ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::Perl_warner_nocontext(); -ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); $warning = ''; Devel::PPPort::ckWARN(); @@ -74,5 +74,5 @@ $^W = 1; $warning = ''; Devel::PPPort::ckWARN(); -ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); +ok("$]" >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/002-more.t b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/002-more.t index 4aaa3ab081c..e98229095ce 100644 --- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/002-more.t +++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/002-more.t @@ -9,7 +9,7 @@ use ExtUtils::CBuilder; use attributes; use overload; -plan tests => 29; +plan tests => 30; my ($source_file, $obj_file, $lib_file); @@ -48,7 +48,7 @@ SKIP: { } SKIP: { - skip "no dynamic loading", 25 + skip "no dynamic loading", 26 if !$b->have_compiler || !$Config{usedl}; my $module = 'XSMore'; $lib_file = $b->link( objects => $obj_file, module_name => $module ); @@ -92,6 +92,9 @@ SKIP: { is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 'the OUTLIST keyword'; + # eval so compile-time sees any prototype + is_deeply [ eval 'XSMore::outlist()' ], [ord('a'), ord('b')], 'OUTLIST prototypes'; + is XSMore::len("foo"), 3, 'the length keyword'; is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive'; diff --git a/gnu/usr.bin/perl/dist/IO/t/io_dir.t b/gnu/usr.bin/perl/dist/IO/t/io_dir.t index 762c452ec83..6c301433958 100755 --- a/gnu/usr.bin/perl/dist/IO/t/io_dir.t +++ b/gnu/usr.bin/perl/dist/IO/t/io_dir.t @@ -9,57 +9,79 @@ BEGIN { } use strict; +use File::Temp qw( tempdir ); +use Cwd; -my $DIR = $^O eq 'MacOS' ? ":" : "."; +my $cwd = cwd(); -my $CLASS = "IO::Dir"; -my $dot = $CLASS->new($DIR); -ok(defined($dot)); +{ + my $DIR = tempdir( CLEANUP => 1 ); + chdir $DIR or die "Unable to chdir to $DIR"; + my @IO_files = + ( 'ChangeLog', 'IO.pm', 'IO.xs', 'Makefile.PL', 'poll.c', 'poll.h', 'README' ); + my @IO_subdirs = ( qw| hints lib t | ); -my @a = sort <*>; -my $first; -do { $first = $dot->read } while defined($first) && $first =~ /^\./; -ok(+(grep { $_ eq $first } @a)); + for my $f (@IO_files) { + open my $OUT, '>', $f or die "Unable to open '$DIR/$f' for writing"; + close $OUT or die "Unable to close '$DIR/$f' after writing"; + } + for my $d (@IO_subdirs) { mkdir $d or die "Unable to mkdir '$DIR/$d'"; } -my @b = sort($first, (grep {/^[^.]/} $dot->read)); -ok(+(join("\0", @a) eq join("\0", @b))); + my $CLASS = "IO::Dir"; + my $dot = $CLASS->new($DIR); + ok(defined($dot), "Able to create IO::Dir object for $DIR"); -ok($dot->rewind,'rewind'); -my @c = sort grep {/^[^.]/} $dot->read; -ok(+(join("\0", @b) eq join("\0", @c))); + my @a = sort <*>; + my $first; + do { $first = $dot->read } while defined($first) && $first =~ /^\./; + ok(+(grep { $_ eq $first } @a), "directory entry found"); -ok($dot->close,'close'); -{ local $^W; # avoid warnings on invalid dirhandle -ok(!$dot->rewind, "rewind on closed"); -ok(!defined($dot->read)); -} + my @b = sort($first, (grep {/^[^.]/} $dot->read)); + ok(+(join("\0", @a) eq join("\0", @b)), "two lists of directory entries match (Case 1)"); + + ok($dot->rewind,'rewind'); + my @c = sort grep {/^[^.]/} $dot->read; + ok(+(join("\0", @b) eq join("\0", @c)), "two lists of directory entries match (Case 2)"); + + ok($dot->close,'close'); + { + local $^W; # avoid warnings on invalid dirhandle + ok(!$dot->rewind, "rewind on closed"); + ok(!defined($dot->read), "Directory handle closed; 'read' returns undef"); + } -open(FH,'>','X') || die "Can't create x"; -print FH "X"; -close(FH) or die "Can't close: $!"; + open(FH,'>','X') || die "Can't create x"; + print FH "X"; + close(FH) or die "Can't close: $!"; -my %dir; -tie %dir, $CLASS, $DIR; -my @files = keys %dir; + my %dir; + tie %dir, $CLASS, $DIR; + my @files = keys %dir; -# I hope we do not have an empty dir :-) -ok(scalar @files); + # I hope we do not have an empty dir :-) + ok(scalar @files, "Tied hash interface finds directory entries"); -my $stat = $dir{'X'}; -isa_ok($stat,'File::stat'); -ok(defined($stat) && $stat->size == 1); + my $stat = $dir{'X'}; + isa_ok($stat,'File::stat'); + ok(defined($stat) && $stat->size == 1, + "Confirm that we wrote a file of size 1 byte"); -delete $dir{'X'}; + delete $dir{'X'}; -ok(-f 'X'); + ok(-f 'X', "File still exists after tied hash entry deleted"); -my %dirx; -tie %dirx, $CLASS, $DIR, DIR_UNLINK; + my %dirx; + tie %dirx, $CLASS, $DIR, DIR_UNLINK; -my $statx = $dirx{'X'}; -isa_ok($statx,'File::stat'); -ok(defined($statx) && $statx->size == 1); + my $statx = $dirx{'X'}; + isa_ok($statx,'File::stat'); + ok(defined($statx) && $statx->size == 1, + "Confirm that we still have the 1-byte file"); -delete $dirx{'X'}; + delete $dirx{'X'}; + + ok(!(-f 'X'), "Using DIR_UNLINK deletes tied hash element and directory entry"); + + chdir $cwd or die "Unable to chdir back to $cwd"; +} -ok(!(-f 'X')); diff --git a/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod b/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod index 8d3eae66060..7025b7f42c3 100644 --- a/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod +++ b/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod @@ -303,7 +303,7 @@ like "How do I get to the marketplace?" that don't have any blanks to fill in, and ones like "How much do these ___ cost?", where there's one or more blanks to fill in (and these are usually linked to a list of words that you can put in that blank: "fish", "potatoes", -"tomatoes", etc.) The ones with no blanks are no problem, but the +"tomatoes", etc.). The ones with no blanks are no problem, but the fill-in-the-blank ones may not be really straightforward. If it's a Swahili phrasebook, for example, the authors probably didn't bother to tell you the complicated ways that the verb "cost" changes its diff --git a/gnu/usr.bin/perl/dist/Net-Ping/Changes b/gnu/usr.bin/perl/dist/Net-Ping/Changes index 2da51e7a255..228663fdd0b 100644 --- a/gnu/usr.bin/perl/dist/Net-Ping/Changes +++ b/gnu/usr.bin/perl/dist/Net-Ping/Changes @@ -1,5 +1,88 @@ CHANGES ------- + +2.71 Tue Oct 16 18:41:51 CEST 2018 (rurban) + Features + - Allow data_size > 1024, up to 65535, i.e. fragmented packets. + It is recommended to stay below 1472 though for the typical 1500 MTU. + Many simple devices do not allow fragmented ICMP packets (> 1472). + RT #17409 + Bugfixes + - Fix the max_datasize documentation + Test fixes + - The 2 sudo tests on PERL_CORE with a shared perl lib + +2.70 Tue Aug 7 10:33:24 CEST 2018 (rurban) + Test fixes + - Fix broken skip count on 510_ping_udp.t (windows only) + +2.69 Mon Aug 6 15:13:25 CEST 2018 (rurban) + Test fixes + - Allow NET_PING_FAIL_IP override for testing an IP which should not exist, + RT #126006 hmbrand + META Changes + - Updated README + +2.68 Wed Jun 27 11:55:06 CEST 2018 (rurban) + Bugfixes + - Fixed _resolv return value on failing DNS name lookup. (GH #12 nlv02636) + - Fixed installation dir from CPAN. Install into site, not perl there. + (GH #12 nlv02636) + +2.67 Mon Jun 25 18:10:42 CEST 2018 (rurban) + Bugfixes + - Fixed non-core icmp ping test. PR #10 Guillaume Bougard + - Change croak on failing name lookup to return undef, + matching the documentation. + Fixes the regression from 2.43, RT #124830 + - Stabilize Socket::VERSION comparisons, errored with Net::Socket + 2.020_03, RT #125677 Smoot Carl-Mitchell + Features + - Added icmp message_type method with timestamp support. + PR #11 Guillaume Bougard + +2.66 Thu Mar 8 16:44:03 CET 2018 (rurban) + Bugfixes + - Fixed icmpv6 ICMP_ECHOREPLY: nikolas@garofil.be RT 80479 + - Fixed icmpv6 default family + - Simplify t/020_external.t + - Seperate timeout=0 and undef RT #97884 + Features + - Added icmpv6 test. + - Added optional local tests hosts for the icmp tests: + TEST_PING_HOST and TEST_PING6_HOST + - allow sudo tests with local .git + - skip sudo test with asan leak detector on linux + +2.65 Wed Mar 7 09:38:51 CET 2018 (rurban) + META Changes + - strip wrong Text::Template dependency and generation for the README + https://rt.cpan.org/Public/Bug/Display.html?id=124693 + This is in core. + - Changed repo name from net-ping to Net-Ping. + - Changed bugtracker to https://github.com/rurban/Net-Ping/issues + - Made Makefile.PL more stable for the CPAN release, support older + perl + EUMM versions. + - Fixed up TODO for IPv6 + +2.64 Sat Mar 3 15:56:14 CET 2018 (rurban) + Bugfixes + - use NIx_NOSERV flag for windows (PR #6 by chorny) + +2.63 Sun Nov 26 18:56:04 CET 2017 (rurban) + Bugfixes + - Keep v5.002 - v5.6 support + - Removed outdated demo/fping from the documentation + (RT #123750 by Steve Morris) + - Added t/420_ping_syn_port.t (#4 by Julio Fraire) + with fixes. + Features + - added indices and crosslinks to the documentation + +2.62 Tue Sep 12 13:20:25 2017 -0600 (Nicholas R) + Limitations (not on CPAN) + - Removed support for v5.002 < v5.6 by introducing our + 2.61 Sat Jun 17 13:12:58 CEST 2017 (rurban) Bugfixes - Fix ping_udp for a started udp echo server (PR#5 by Stephan Loyd) diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/001_new.t b/gnu/usr.bin/perl/dist/Net-Ping/t/001_new.t index a51279e0a6c..6b097d70a81 100644 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/001_new.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/001_new.t @@ -42,7 +42,7 @@ eval { like($@, qr/Data for ping must be from/, "new() errors for invalid data size"); eval { - $p = Net::Ping->new("udp", 10, 1025); + $p = Net::Ping->new("udp", 10, 70000); }; like($@, qr/Data for ping must be from/, "new() errors for invalid data size"); @@ -51,7 +51,7 @@ like($@, qr/Data for ping must be from/, "new() errors for invalid data size"); # force failures for tcp SKIP: { - note "Checking icmp"; + # diag "Checking icmp"; eval { $p = Net::Ping->new('icmp'); }; skip "icmp ping requires root privileges.", 3 if !Net::Ping::_isroot() or $^O eq 'MSWin32'; diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/190_alarm.t b/gnu/usr.bin/perl/dist/Net-Ping/t/190_alarm.t index addfa9e8b8c..65276a27d71 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/190_alarm.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/190_alarm.t @@ -28,6 +28,9 @@ use strict; use Test::More tests => 6; BEGIN {use_ok 'Net::Ping'}; +# Hopefully this is never a routeable host +my $fail_ip = $ENV{NET_PING_FAIL_IP} || "172.29.249.249"; + eval { my $timeout = 11; @@ -42,7 +45,7 @@ eval { my $ping = Net::Ping->new("tcp", 2); # It does not matter if alive or not $ping->ping("127.0.0.1"); - $ping->ping("172.29.249.249"); + $ping->ping($fail_ip); die "alarm failed" if time > $start + $timeout + 1; } }; diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t b/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t index a26b2f1b3d3..47168b014ad 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t @@ -17,6 +17,9 @@ BEGIN { } } +# Hopefully this is never a routeable host +my $fail_ip = $ENV{NET_PING_FAIL_IP} || "172.29.249.249"; + # Remote network test using tcp protocol. # # NOTE: @@ -28,13 +31,19 @@ BEGIN { # # $ PERL_CORE=1 make test -use Test::More tests => 12; +use Test::More tests => 13; BEGIN {use_ok('Net::Ping');} my $p = new Net::Ping "tcp",9; isa_ok($p, 'Net::Ping', 'new() worked'); +# message_type can't be used +eval { + $p->message_type(); +}; +like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol"); + isnt($p->ping("localhost"), 0, 'Test on the default port'); # Change to use the more common web port. @@ -44,8 +53,7 @@ isnt($p->{port_num} = (getservbyname("http", "tcp") || 80), undef); isnt($p->ping("localhost"), 0, 'Test localhost on the web port'); -# Hopefully this is never a routeable host -is($p->ping("172.29.249.249"), 0, "Can't reach 172.29.249.249"); +is($p->ping($fail_ip), 0, "Can't reach $fail_ip"); # Test a few remote servers # Hopefully they are up when the tests are run. diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/300_ping_stream.t b/gnu/usr.bin/perl/dist/Net-Ping/t/300_ping_stream.t index f3b4ee454d5..8750dd3a85d 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/300_ping_stream.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/300_ping_stream.t @@ -30,7 +30,7 @@ BEGIN { # to really test the stream protocol ping. See # the end of this document on how to enable it. -use Test::More tests => 22; +use Test::More tests => 23; use Net::Ping; my $p = new Net::Ping "stream"; @@ -38,6 +38,12 @@ my $p = new Net::Ping "stream"; # new() worked? isa_ok($p, 'Net::Ping', 'new() worked'); +# message_type can't be used +eval { + $p->message_type(); +}; +like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol"); + is($p->ping("localhost"), 1, 'Attempt to connect to the echo port'); for (1..20) { diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t b/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t index edad0fc5fca..1ccec9f0eed 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t @@ -32,13 +32,14 @@ BEGIN { # # $ PERL_CORE=1 make test +# Hopefully this is never a routeable host +my $fail_ip = $ENV{NET_PING_FAIL_IP} || "172.29.249.249"; + # Try a few remote servers my %webs = ( - # Hopefully this is never a routeable host - "172.29.249.249" => 0, + $fail_ip => 0, # Hopefully all these web ports are open - "www.freeservers.com." => 1, "yahoo.com." => 1, "www.yahoo.com." => 1, "www.about.com." => 1, @@ -46,7 +47,7 @@ my %webs = ( ); use Test::More; -plan tests => 3 + 2 * keys %webs; +plan tests => 4 + 2 * keys %webs; use_ok('Net::Ping'); @@ -70,6 +71,12 @@ isa_ok($p, 'Net::Ping', 'new() worked'); # (Make sure getservbyname works in scalar context.) cmp_ok(($p->{port_num} = getservbyname("http", "tcp")), '>', 0, 'valid port'); +# message_type can't be used +eval { + $p->message_type(); +}; +like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol"); + # check if network is up eval { $p->ping('www.google.com.'); }; if ($@ =~ /getaddrinfo.*failed/) { diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t b/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t index 8e89e32ac8d..d84a7eb6ae3 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t @@ -36,9 +36,11 @@ BEGIN { # Try a few remote servers my %webs; BEGIN { - %webs = ( # Hopefully this is never a routeable host - "172.29.249.249" => 0, + my $fail_ip = $ENV{NET_PING_FAIL_IP} || "172.29.249.249"; + + %webs = ( + $fail_ip => 0, # Hopefully all these web ports are open "www.google.com." => 1, diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/420_ping_syn_port.t b/gnu/usr.bin/perl/dist/Net-Ping/t/420_ping_syn_port.t new file mode 100644 index 00000000000..55ee88a835c --- /dev/null +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/420_ping_syn_port.t @@ -0,0 +1,103 @@ +# Same as 400_ping_sync.t, but port should be included in return +use strict; + +BEGIN { + if ($ENV{PERL_CORE}) { + unless ($ENV{PERL_TEST_Net_Ping}) { + print "1..0 # Skip: network dependent test\n"; + exit; + } + } + unless (eval "require Socket") { + print "1..0 \# Skip: no Socket\n"; + exit; + } + unless (getservbyname('echo', 'tcp')) { + print "1..0 \# Skip: no echo port\n"; + exit; + } + unless (getservbyname('http', 'tcp')) { + print "1..0 \# Skip: no http port\n"; + exit; + } +} + +# Remote network test using syn protocol. +# +# NOTE: +# Network connectivity will be required for all tests to pass. +# Firewalls may also cause some tests to fail, so test it +# on a clear network. If you know you do not have a direct +# connection to remote networks, but you still want the tests +# to pass, use the following: +# +# $ PERL_CORE=1 make test + +# Hopefully this is never a routeable host +my $fail_ip = $ENV{NET_PING_FAIL_IP} || "172.29.249.249"; + +# Try a few remote servers +my %webs; +my @hosts = ( + $fail_ip, + + # Hopefully all these http and https ports are open + "www.google.com", + "www.duckduckgo.com", + "www.microsoft.com", +); + +use Test::More tests => 19; + +BEGIN {use_ok('Net::Ping')}; + +my $can_alarm = eval {alarm 0; 1;}; + +sub Alarm { + alarm(shift) if $can_alarm; +} + +Alarm(50); +$SIG{ALRM} = sub { + fail('Alarm timed out'); + die "TIMED OUT!"; +}; + +my $p = Net::Ping->new("syn", 10); + +isa_ok($p, 'Net::Ping', 'new() worked'); + +# Change to use the more common web port. +# (Make sure getservbyname works in scalar context.) +cmp_ok(($p->{port_num} = getservbyname("http", "tcp")), '>', 0, 'valid port for http/tcp'); + +my %contacted; +foreach my $host (@hosts) { + # ping() does dns resolution and + # only sends the SYN at this point + Alarm(50); # (Plenty for a DNS lookup) + foreach my $port (80, 443) { + $p->port_number($port); + is($p->ping($host), 1, "Sent SYN to $host at port $port [" . ($p->{bad}->{$host} || "") . "]"); + $contacted{"$host:$port"} = 1; + } +} + +Alarm(20); +while (my @r = $p->ack()) { + my %res; + @res{qw(host ack_time ip port)} = @r; + my $answered = "$res{host}:$res{port}"; + like($answered, qr/^[\w\.]+:\d+$/, "Supposed to be up: $res{host}:$res{port}"); + delete $contacted{$answered}; +} + +Alarm(0); +# $fail_ip should not be reachable +is keys %contacted, 2, + '2 servers did not acknowledge our ping' + or diag sort keys %contacted; +delete $contacted{$_} + foreach ("$fail_ip:80","$fail_ip:443", 'www.about.com:443'); +is keys %contacted, 0, + 'The servers that did not acknowledge our ping were correct'; diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t b/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t index a9175bae7bd..e3557115bcd 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t @@ -1,12 +1,16 @@ # Test to perform icmp protocol testing. # Root access is required. +# In the core test suite it calls itself via sudo -n (no password) to test it. use strict; use Config; use Test::More; +use Net::Ping; +use Cwd; +use File::Spec; BEGIN { - unless (eval "require Socket") { + unless (eval "require Socket;") { plan skip_all => 'no Socket'; } unless ($Config{d_getpbyname}) { @@ -14,19 +18,62 @@ BEGIN { } } -BEGIN {use_ok('Net::Ping')}; +my $is_devel = $ENV{PERL_CORE} || -d ".git" ? 1 : 0; +# Note this rawsocket test code is considered anti-social in p5p and was removed in +# their variant. +# See http://nntp.perl.org/group/perl.perl5.porters/240707 +# Problem is that ping_icmp needs root perms, and previous bugs were +# never caught. So I rather execute it via sudo in the core test suite +# and on devel CPAN dirs, than not at all and risk further bitrot of this API. +if ( 0 && !Net::Ping::_isroot()) { # disable in blead via 7bfdd8260c + my $file = __FILE__; + my $lib = $ENV{PERL_CORE} ? '-I../../lib' : '-Mblib'; + if ($is_devel and $Config{ccflags} =~ /fsanitize=address/ and $^O eq 'linux') { + plan skip_all => 'asan leak detector'; + } + # -n prevents from asking for a password. rather fail then + # A technical problem is with leak-detectors, like asan, which + # require PERL_DESTRUCT_LEVEL=2 to be set in the root env. + my $env = "PERL_DESTRUCT_LEVEL=2"; + if ($ENV{TEST_PING_HOST}) { + $env .= " TEST_PING_HOST=$ENV{TEST_PING_HOST}"; + } + if ($ENV{PERL_CORE} && $Config{ldlibpthname}) { + my $up = File::Spec->updir(); + my $dir = Cwd::abs_path(File::Spec->catdir($up, $up)); + $env .= " $Config{ldlibpthname}=\"$dir\""; + } + if ($is_devel and + system("sudo -n $env \"$^X\" $lib $file") == 0) + { + exit; + } else { + plan skip_all => 'no sudo/failed'; + } +} SKIP: { - skip "icmp ping requires root privileges.", 1 + skip "icmp ping requires root privileges.", 2 if !Net::Ping::_isroot() or $^O eq 'MSWin32'; my $p = new Net::Ping "icmp"; + is($p->message_type(), 'echo', "default icmp message type is 'echo'"); + # message_type fails on wrong message type + eval { + $p->message_type('information'); + }; + like($@, qr/icmp message type are limited to 'echo' and 'timestamp'/, "Failure on wrong message type"); my $result = $p->ping("127.0.0.1"); if ($result == 1) { is($result, 1, "icmp ping 127.0.0.1"); } else { TODO: { - local $TODO = "icmp firewalled?"; - is($result, 1, "icmp ping 127.0.0.1"); + local $TODO = "localhost icmp firewalled?"; + if (exists $ENV{TEST_PING_HOST}) { + my $result = $p->ping($ENV{TEST_PING_HOST}); + is($result, 1, "icmp ping $ENV{TEST_PING_HOST}"); + } else { + is($result, 1, "icmp ping 127.0.0.1"); + } } } } diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/501_ping_icmpv6.t b/gnu/usr.bin/perl/dist/Net-Ping/t/501_ping_icmpv6.t new file mode 100644 index 00000000000..7d89f01cc9d --- /dev/null +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/501_ping_icmpv6.t @@ -0,0 +1,73 @@ +# Test to perform ICMPv6 protocol testing. +# Root access is required. +# In the core test suite it calls itself via sudo -n (no password) to test it. + +use strict; +use Config; +use Net::Ping; +use Test::More; +use Cwd; +use File::Spec; + +BEGIN { + unless (eval "require Socket") { + plan skip_all => 'no Socket'; + } + unless ($Config{d_getpbyname}) { + plan skip_all => 'no getprotobyname'; + } +} + +my $is_devel = $ENV{PERL_CORE} || -d ".git" ? 1 : 0; +if (0 && !Net::Ping::_isroot()) { + my $file = __FILE__; + my $lib = $ENV{PERL_CORE} ? '-I../../lib' : '-Mblib'; + # -n prevents from asking for a password. rather fail then + # A technical problem is with leak-detectors, like asan, which + # require PERL_DESTRUCT_LEVEL=2 to be set in the root env. + my $env = "PERL_DESTRUCT_LEVEL=2"; + if ($ENV{TEST_PING6_HOST}) { + $env .= " TEST_PING6_HOST=$ENV{TEST_PING6_HOST}"; + } + if ($ENV{PERL_CORE} && $Config{ldlibpthname}) { + my $up = File::Spec->updir(); + my $dir = Cwd::abs_path(File::Spec->catdir($up, $up)); + $env .= " $Config{ldlibpthname}=\"$dir\""; + } + if ($is_devel and + system("sudo -n $env \"$^X\" $lib $file") == 0) { + exit; + } else { + plan skip_all => 'no sudo/failed'; + } +} + + +SKIP: { + skip "icmpv6 ping requires root privileges.", 1 + if !Net::Ping::_isroot() or $^O eq 'MSWin32'; + my $p = new Net::Ping "icmpv6"; + # message_type can't be used + eval { + $p->message_type(); + }; + like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol"); + my $rightip = "2001:4860:4860::8888"; # pingable ip of google's dnsserver + # for a firewalled ipv6 network try an optional local ipv6 host + $rightip = $ENV{TEST_PING6_HOST} if $ENV{TEST_PING6_HOST}; + my $wrongip = "2001:4860:4860::1234"; # non existing ip + # diag "Pinging existing IPv6 "; + my $result = $p->ping($rightip); + if ($result == 1) { + ok($result, "icmpv6 ping $rightip"); + # diag "Pinging wrong IPv6 "; + ok(!$p->ping($wrongip), "icmpv6 ping $wrongip"); + } else { + TODO: { + local $TODO = "icmpv6 firewalled?"; + is($result, 1, "icmpv6 ping $rightip"); + } + } +} + +done_testing; diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t b/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t index 025e9803927..f974b40dfa2 100755 --- a/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t +++ b/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t @@ -11,17 +11,21 @@ sub isWindowsVista { #is this Vista or later? my ($string, $major, $minor, $build, $id) = Win32::GetOSVersion(); return $build >= 6; - } -use Test::More tests => 2; +use Test::More tests => 3; BEGIN {use_ok('Net::Ping')}; SKIP: { - skip "No udp echo port", 1 unless getservbyname('echo', 'udp'); - skip "udp ping blocked by Window's default settings", 1 if isWindowsVista(); - skip "No getprotobyname", 1 unless $Config{d_getpbyname}; - skip "Not allowed on $^O", 1 if $^O =~ /^(hpux|irix|aix)$/; + skip "No udp echo port", 2 unless getservbyname('echo', 'udp'); + skip "udp ping blocked by Window's default settings", 2 if isWindowsVista(); + skip "No getprotobyname", 2 unless $Config{d_getpbyname}; + skip "Not allowed on $^O", 2 if $^O =~ /^(hpux|irix|aix)$/; my $p = new Net::Ping "udp"; + # message_type can't be used + eval { + $p->message_type(); + }; + like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol"); is($p->ping("127.0.0.1"), 1); } diff --git a/gnu/usr.bin/perl/dist/PathTools/t/abs2rel.t b/gnu/usr.bin/perl/dist/PathTools/t/abs2rel.t index b77a1c2715c..b813e3d1a6e 100644 --- a/gnu/usr.bin/perl/dist/PathTools/t/abs2rel.t +++ b/gnu/usr.bin/perl/dist/PathTools/t/abs2rel.t @@ -25,7 +25,7 @@ sub test_rel2abs { File::Spec->catdir('first_sub_dir', 'sub_sub_dir'), 'second_sub_dir' ); - mkpath(@subdirs, { mode => 0711 }) + mkpath(\@subdirs, 0, 0711) or die "Unable to mkpath: $!"; open my $OUT2, '>', diff --git a/gnu/usr.bin/perl/dist/PathTools/t/cwd.t b/gnu/usr.bin/perl/dist/PathTools/t/cwd.t index 483b4378d52..c05693880e2 100644 --- a/gnu/usr.bin/perl/dist/PathTools/t/cwd.t +++ b/gnu/usr.bin/perl/dist/PathTools/t/cwd.t @@ -10,6 +10,7 @@ chdir 't'; use Config; use File::Spec; use File::Path; +use Errno qw(EACCES); use lib File::Spec->catdir('t', 'lib'); use Test::More; @@ -208,7 +209,15 @@ SKIP: { like($abs_path, qr|$want$|i, "Cwd::abs_path produced $abs_path"); like($fast_abs_path, qr|$want$|i, "Cwd::fast_abs_path produced $fast_abs_path"); - like($pas, qr|$want$|i, "Cwd::_perl_abs_path produced $pas") if $EXTRA_ABSPATH_TESTS; + if ($EXTRA_ABSPATH_TESTS) { + # _perl_abs_path() can fail if some ancestor directory isn't readable + if (defined $pas) { + like($pas, qr|$want$|i, "Cwd::_perl_abs_path produced $pas"); + } + else { + is($!+0, EACCES, "check we got the expected error on failure"); + } + } rmtree($test_dirs[0], 0, 0); 1 while unlink $file; diff --git a/gnu/usr.bin/perl/dist/PathTools/t/cwd_enoent.t b/gnu/usr.bin/perl/dist/PathTools/t/cwd_enoent.t index 8f3a1fb1fb3..510c65ed0c9 100644 --- a/gnu/usr.bin/perl/dist/PathTools/t/cwd_enoent.t +++ b/gnu/usr.bin/perl/dist/PathTools/t/cwd_enoent.t @@ -2,7 +2,7 @@ use warnings; use strict; use Config; -use Errno qw(ENOENT); +use Errno qw(); use File::Temp qw(tempdir); use Test::More; @@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){ plan tests => 8; require Cwd; +my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ())); foreach my $type (qw(regular perl)) { SKIP: { skip "_perl_abs_path() not expected to work", 4 @@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) { $res = Cwd::getcwd(); $eno = 0+$!; is $res, undef, "$type getcwd result on non-existent directory"; - is $eno, ENOENT, "$type getcwd errno on non-existent directory"; + ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory") + or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); $! = 0; $res = Cwd::abs_path("."); $eno = 0+$!; is $res, undef, "$type abs_path result on non-existent directory"; - is $eno, ENOENT, "$type abs_path errno on non-existent directory"; + ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory") + or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); } } diff --git a/gnu/usr.bin/perl/dist/Storable/MANIFEST b/gnu/usr.bin/perl/dist/Storable/MANIFEST new file mode 100644 index 00000000000..d30b94e1338 --- /dev/null +++ b/gnu/usr.bin/perl/dist/Storable/MANIFEST @@ -0,0 +1,66 @@ +__Storable__.pm +ChangeLog +hints/gnukfreebsd.pl +hints/gnuknetbsd.pl +hints/hpux.pl +hints/linux.pl +Makefile.PL +MANIFEST This list of files +META.json Module JSON meta-data (added by MakeMaker) +META.yml Module meta-data (added by MakeMaker) +ppport.h +README +stacksize +Storable.pm.PL +Storable.xs +t/attach.t +t/attach_errors.t +t/attach_singleton.t +t/blessed.t +t/canonical.t +t/circular_hook.t +t/code.t +t/compat01.t +t/compat06.t +t/croak.t +t/CVE-2015-1592.t +t/dclone.t +t/destroy.t +t/downgrade.t +t/file_magic.t +t/flags.t +t/forgive.t +t/freeze.t +t/HAS_ATTACH.pm +t/HAS_HOOK.pm +t/HAS_OVERLOAD.pm +t/huge.t +t/hugeids.t +t/integer.t +t/interwork56.t +t/just_plain_nasty.t +t/leaks.t +t/lock.t +t/make_56_interwork.pl +t/make_downgrade.pl +t/make_overload.pl +t/malice.t +t/overload.t +t/recurse.t +t/regexp.t +t/restrict.t +t/retrieve.t +t/robust.t +t/sig_die.t +t/st-dump.pl +t/store.t +t/testlib.pl +t/threads.t +t/tied.t +t/tied_hook.t +t/tied_items.t +t/tied_reify.t +t/tied_store.t +t/utf8.t +t/utf8hash.t +t/weak.t diff --git a/gnu/usr.bin/perl/dist/Storable/t/CVE-2015-1592.t b/gnu/usr.bin/perl/dist/Storable/t/CVE-2015-1592.t index 2730cdc9d1c..a71f44c0cb4 100644 --- a/gnu/usr.bin/perl/dist/Storable/t/CVE-2015-1592.t +++ b/gnu/usr.bin/perl/dist/Storable/t/CVE-2015-1592.t @@ -1,22 +1,21 @@ #!/usr/bin/perl use strict; +use warnings; use Test::More; +use Storable qw(freeze thaw); plan tests => 1; -use File::Temp qw(tempdir); -use File::Spec; -my $tmp_dir = tempdir(CLEANUP => 1); -my $tmp_file = File::Spec->catfile($tmp_dir, 'sploit'); +# this original worked with the packaged exploit, but that +# triggers virus scanners, so test for the behaviour instead +my $x = bless \(my $y = "mt-config.cgi"), "CGITempFile"; + +my $frozen = freeze($x); -my $file = __FILE__; -$file =~ s/\.t$/.inc/; -my $inc = $ENV{PERL_CORE} ? "-Ilib -I../../lib" : "-I".join(" -I", @INC); -system qq($^X $inc -w "$file" 2>$tmp_file); -open(my $fh, "<", $tmp_file) or die "$tmp_file $!"; { - local $/; - my $err = <$fh>; - like($err, qr/SECURITY: Movable-Type CVE-2015-1592 Storable metasploit attack/, - 'Detect CVE-2015-1592'); + my $warnings = ''; + local $SIG{__WARN__} = sub { $warnings .= "@_" }; + thaw($frozen); + like($warnings, qr/SECURITY: Movable-Type CVE-2015-1592 Storable metasploit attack/, + 'Detect CVE-2015-1592'); } diff --git a/gnu/usr.bin/perl/dist/Storable/t/dclone.t b/gnu/usr.bin/perl/dist/Storable/t/dclone.t index af3d7f6abfd..ce6c756a193 100755 --- a/gnu/usr.bin/perl/dist/Storable/t/dclone.t +++ b/gnu/usr.bin/perl/dist/Storable/t/dclone.t @@ -87,6 +87,8 @@ SKIP: { # Do not fail if Tie::Hash and/or Tie::StdHash is not available skip 'No Tie::StdHash available', 2 unless eval { require Tie::Hash; scalar keys %Tie::StdHash:: }; + skip 'This version of perl has problems with Tie::StdHash', 2 + if $] eq "5.008"; tie my %tie, "Tie::StdHash" or die $!; $tie{array} = [1,2,3,4]; $tie{hash} = {1,2,3,4}; diff --git a/gnu/usr.bin/perl/dist/Storable/t/threads.t b/gnu/usr.bin/perl/dist/Storable/t/threads.t index 0bc24869917..0b34334cff0 100755 --- a/gnu/usr.bin/perl/dist/Storable/t/threads.t +++ b/gnu/usr.bin/perl/dist/Storable/t/threads.t @@ -28,6 +28,10 @@ sub BEGIN { print "1..0 # Skip: no threads\n"; exit 0; } + if ($] eq "5.008" || $] eq "5.010000") { + print "1..0 # Skip: threads unreliable in perl-$]\n"; + exit 0; + } # - is \W, so can't use \b at start. Negative look ahead and look behind # works at start/end of string, or where preceded/followed by spaces if ($] == 5.008002 and eval q{ $Config{'ccflags'} =~ /(?<!\S)-DDEBUGGING(?!\S)/ }) { diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/01_basic.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/01_basic.t index 2983f0b7004..91244dbbf00 100755 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/01_basic.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/01_basic.t @@ -12,12 +12,14 @@ BEGIN { use threads; use Thread::Queue; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 81); ### Basic usage with multiple threads ### diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/02_refs.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/02_refs.t index 0cebdc1db33..758c97e1937 100755 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/02_refs.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/02_refs.t @@ -13,12 +13,14 @@ use threads; use threads::shared; use Thread::Queue; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 46); # Regular array diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/03_peek.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/03_peek.t index d543b594699..7b9ca05b927 100755 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/03_peek.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/03_peek.t @@ -12,12 +12,14 @@ BEGIN { use threads; use Thread::Queue; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 19); my $q = Thread::Queue->new(1..10); diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/05_extract.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/05_extract.t index de0e78bfd01..823bd0cc944 100755 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/05_extract.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/05_extract.t @@ -12,12 +12,14 @@ BEGIN { use threads; use Thread::Queue; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 20); my $q = Thread::Queue->new(1..10); diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/06_insert.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/06_insert.t index 4f9d1dff5e4..64dc4e37644 100755 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/06_insert.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/06_insert.t @@ -12,12 +12,14 @@ BEGIN { use threads; use Thread::Queue; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 16); my $q = Thread::Queue->new(1..10); diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/07_lock.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/07_lock.t index b20e0604ca5..66c4550503e 100755 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/07_lock.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/07_lock.t @@ -13,12 +13,14 @@ use threads; use Thread::Queue; use Thread::Semaphore; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 3); # The following tests locking a queue diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t index 8404720ed62..896954c6fd2 100644 --- a/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t +++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t @@ -12,12 +12,14 @@ BEGIN { use threads; use Thread::Queue; +BEGIN { # perl RT 133382 if ($] == 5.008) { require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 } else { require Test::More; } Test::More->import(); +} # end BEGIN plan('tests' => 19); ### ->dequeue_timed(TIMEOUT, COUNT) test ### diff --git a/gnu/usr.bin/perl/dist/lib/lib_pm.PL b/gnu/usr.bin/perl/dist/lib/lib_pm.PL index a4c5cc38a74..ef6c0313d89 100644 --- a/gnu/usr.bin/perl/dist/lib/lib_pm.PL +++ b/gnu/usr.bin/perl/dist/lib/lib_pm.PL @@ -86,7 +86,7 @@ my \@inc_version_list = $Config_inc_version_list; print OUT <<'!NO!SUBS!'; our @ORIG_INC = @INC; # take a handy copy of 'original' value -our $VERSION = '0.64'; +our $VERSION = '0.65'; sub import { shift; @@ -220,7 +220,9 @@ 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. +architecture specific directory and is also deleted from @INC. lib.pm also +checks if directories called $dir/$version and $dir/$version/$archname +exist and deletes these directories from @INC. =head2 Restoring original @INC diff --git a/gnu/usr.bin/perl/ext/B/B/Terse.pm b/gnu/usr.bin/perl/ext/B/B/Terse.pm index 681112e9041..4401073f253 100644 --- a/gnu/usr.bin/perl/ext/B/B/Terse.pm +++ b/gnu/usr.bin/perl/ext/B/B/Terse.pm @@ -1,6 +1,6 @@ package B::Terse; -our $VERSION = '1.08'; +our $VERSION = '1.09'; use strict; use B qw(class @specialsv_name); @@ -73,7 +73,7 @@ B::Terse - Walk Perl syntax tree, printing terse info about ops =head1 DESCRIPTION This module prints the contents of the parse tree, but without as much -information as L<B::Debug>. For comparison, C<print "Hello, world."> +information as CPAN module B::Debug. For comparison, C<print "Hello, world."> produced 96 lines of output from B::Debug, but only 6 from B::Terse. This module is useful for people who are writing their own back end, diff --git a/gnu/usr.bin/perl/ext/B/t/strict.t b/gnu/usr.bin/perl/ext/B/t/strict.t index 4d1b84aa20d..9f5eacd7da6 100644 --- a/gnu/usr.bin/perl/ext/B/t/strict.t +++ b/gnu/usr.bin/perl/ext/B/t/strict.t @@ -7,7 +7,7 @@ use Config; use Test::More; BEGIN { - if ( ( $Config{'extensions'} !~ /\sB\s/ ) ) { + if ( ( $Config{'extensions'} !~ /\bB\b/ ) ) { plan skip_all => "Perl was not compiled with B"; exit 0; } diff --git a/gnu/usr.bin/perl/ext/File-Find/t/taint.t b/gnu/usr.bin/perl/ext/File-Find/t/taint.t index d126e69c597..f56d18696c9 100644 --- a/gnu/usr.bin/perl/ext/File-Find/t/taint.t +++ b/gnu/usr.bin/perl/ext/File-Find/t/taint.t @@ -85,30 +85,30 @@ my $FastFileTests_OK = 0; sub cleanup { chdir($orig_dir_untainted); my $need_updir = 0; - if (-d dir_path('for_find')) { - $need_updir = 1 if chdir(dir_path('for_find')); + if (-d dir_path('for_find_taint')) { + $need_updir = 1 if chdir(dir_path('for_find_taint')); } - if (-d dir_path('fa')) { - unlink file_path('fa', 'fa_ord'), - file_path('fa', 'fsl'), - file_path('fa', 'faa', 'faa_ord'), - file_path('fa', 'fab', 'fab_ord'), - file_path('fa', 'fab', 'faba', 'faba_ord'), - file_path('fb', 'fb_ord'), - file_path('fb', 'fba', 'fba_ord'); - rmdir dir_path('fa', 'faa'); - rmdir dir_path('fa', 'fab', 'faba'); - rmdir dir_path('fa', 'fab'); - rmdir dir_path('fa'); - rmdir dir_path('fb', 'fba'); - rmdir dir_path('fb'); + if (-d dir_path('fa_taint')) { + unlink file_path('fa_taint', 'fa_ord'), + file_path('fa_taint', 'fsl'), + file_path('fa_taint', 'faa', 'faa_ord'), + file_path('fa_taint', 'fab', 'fab_ord'), + file_path('fa_taint', 'fab', 'faba', 'faba_ord'), + file_path('fb_taint', 'fb_ord'), + file_path('fb_taint', 'fba', 'fba_ord'); + rmdir dir_path('fa_taint', 'faa'); + rmdir dir_path('fa_taint', 'fab', 'faba'); + rmdir dir_path('fa_taint', 'fab'); + rmdir dir_path('fa_taint'); + rmdir dir_path('fb_taint', 'fba'); + rmdir dir_path('fb_taint'); } if ($need_updir) { my $updir = $^O eq 'VMS' ? File::Spec::VMS->updir() : File::Spec->updir; chdir($updir); } - if (-d dir_path('for_find')) { - rmdir dir_path('for_find') or print "# Can't rmdir for_find: $!\n"; + if (-d dir_path('for_find_taint')) { + rmdir dir_path('for_find_taint') or print "# Can't rmdir for_find_taint: $!\n"; } } @@ -157,29 +157,29 @@ sub simple_wanted { *file_path_name = \&file_path; -mkdir_ok( dir_path('for_find'), 0770 ); -ok( chdir( dir_path('for_find')), 'successful chdir() to for_find' ); +mkdir_ok( dir_path('for_find_taint'), 0770 ); +ok( chdir( dir_path('for_find_taint')), 'successful chdir() to for_find_taint' ); $cwd = cwd(); # save cwd ( $cwd_untainted ) = $cwd =~ m|^(.+)$|; # untaint it -mkdir_ok( dir_path('fa'), 0770 ); -mkdir_ok( dir_path('fb'), 0770 ); -create_file_ok( file_path('fb', 'fb_ord') ); -mkdir_ok( dir_path('fb', 'fba'), 0770 ); -create_file_ok( file_path('fb', 'fba', 'fba_ord') ); +mkdir_ok( dir_path('fa_taint'), 0770 ); +mkdir_ok( dir_path('fb_taint'), 0770 ); +create_file_ok( file_path('fb_taint', 'fb_ord') ); +mkdir_ok( dir_path('fb_taint', 'fba'), 0770 ); +create_file_ok( file_path('fb_taint', 'fba', 'fba_ord') ); SKIP: { skip "Creating symlink", 1, unless $symlink_exists; - ok( symlink('../fb','fa/fsl'), 'Created symbolic link' ); + ok( symlink('../fb_taint','fa_taint/fsl'), 'Created symbolic link' ); } -create_file_ok( file_path('fa', 'fa_ord') ); +create_file_ok( file_path('fa_taint', 'fa_ord') ); -mkdir_ok( dir_path('fa', 'faa'), 0770 ); -create_file_ok( file_path('fa', 'faa', 'faa_ord') ); -mkdir_ok( dir_path('fa', 'fab'), 0770 ); -create_file_ok( file_path('fa', 'fab', 'fab_ord') ); -mkdir_ok( dir_path('fa', 'fab', 'faba'), 0770 ); -create_file_ok( file_path('fa', 'fab', 'faba', 'faba_ord') ); +mkdir_ok( dir_path('fa_taint', 'faa'), 0770 ); +create_file_ok( file_path('fa_taint', 'faa', 'faa_ord') ); +mkdir_ok( dir_path('fa_taint', 'fab'), 0770 ); +create_file_ok( file_path('fa_taint', 'fab', 'fab_ord') ); +mkdir_ok( dir_path('fa_taint', 'fab', 'faba'), 0770 ); +create_file_ok( file_path('fa_taint', 'fab', 'faba', 'faba_ord') ); print "# check untainting (no follow)\n"; @@ -192,14 +192,14 @@ print "# check untainting (no follow)\n"; delete $Expect_File{ file_path('fsl') } unless $symlink_exists; %Expect_Name = (); -%Expect_Dir = ( dir_path('fa') => 1, dir_path('faa') => 1, +%Expect_Dir = ( dir_path('fa_taint') => 1, dir_path('faa') => 1, dir_path('fab') => 1, dir_path('faba') => 1, - dir_path('fb') => 1, dir_path('fba') => 1); + dir_path('fb_taint') => 1, dir_path('fba') => 1); -delete @Expect_Dir{ dir_path('fb'), dir_path('fba') } unless $symlink_exists; +delete @Expect_Dir{ dir_path('fb_taint'), dir_path('fba') } unless $symlink_exists; File::Find::find( {wanted => \&wanted_File_Dir_prune, untaint => 1, - untaint_pattern => qr|^(.+)$|}, topdir('fa') ); + untaint_pattern => qr|^(.+)$|}, topdir('fa_taint') ); is(scalar keys %Expect_File, 0, 'Found all expected files'); @@ -208,7 +208,7 @@ is(scalar keys %Expect_File, 0, 'Found all expected files'); %Expect_Name = (); %Expect_Dir = (); undef $@; -eval {File::Find::find( {wanted => \&simple_wanted}, topdir('fa') );}; +eval {File::Find::find( {wanted => \&simple_wanted}, topdir('fa_taint') );}; like( $@, qr|Insecure dependency|, 'Tainted directory causes death (good)' ); chdir($cwd_untainted); @@ -218,7 +218,7 @@ undef $@; eval {File::Find::find( {wanted => \&simple_wanted, untaint => 1, untaint_pattern => qr|^(NO_MATCH)$|}, - topdir('fa') );}; + topdir('fa_taint') );}; like( $@, qr|is still tainted|, 'Bad untaint pattern causes death (good)' ); chdir($cwd_untainted); @@ -230,7 +230,7 @@ undef $@; eval {File::Find::find( {wanted => \&simple_wanted, untaint => 1, untaint_skip => 1, untaint_pattern => - qr|^(NO_MATCH)$|}, topdir('fa') );}; + qr|^(NO_MATCH)$|}, topdir('fa_taint') );}; print "# $@" if $@; #$^D = 8; @@ -249,31 +249,31 @@ SKIP: { # untainting here should work correctly # no_chdir is in effect, hence we use file_path_name to specify the expected paths for %Expect_File - %Expect_File = (file_path_name('fa') => 1, - file_path_name('fa','fa_ord') => 1, - file_path_name('fa', 'fsl') => 1, - file_path_name('fa', 'fsl', 'fb_ord') => 1, - file_path_name('fa', 'fsl', 'fba') => 1, - file_path_name('fa', 'fsl', 'fba', 'fba_ord') => 1, - file_path_name('fa', 'fab') => 1, - file_path_name('fa', 'fab', 'fab_ord') => 1, - file_path_name('fa', 'fab', 'faba') => 1, - file_path_name('fa', 'fab', 'faba', 'faba_ord') => 1, - file_path_name('fa', 'faa') => 1, - file_path_name('fa', 'faa', 'faa_ord') => 1); + %Expect_File = (file_path_name('fa_taint') => 1, + file_path_name('fa_taint','fa_ord') => 1, + file_path_name('fa_taint', 'fsl') => 1, + file_path_name('fa_taint', 'fsl', 'fb_ord') => 1, + file_path_name('fa_taint', 'fsl', 'fba') => 1, + file_path_name('fa_taint', 'fsl', 'fba', 'fba_ord') => 1, + file_path_name('fa_taint', 'fab') => 1, + file_path_name('fa_taint', 'fab', 'fab_ord') => 1, + file_path_name('fa_taint', 'fab', 'faba') => 1, + file_path_name('fa_taint', 'fab', 'faba', 'faba_ord') => 1, + file_path_name('fa_taint', 'faa') => 1, + file_path_name('fa_taint', 'faa', 'faa_ord') => 1); %Expect_Name = (); - %Expect_Dir = (dir_path('fa') => 1, - dir_path('fa', 'faa') => 1, - dir_path('fa', 'fab') => 1, - dir_path('fa', 'fab', 'faba') => 1, - dir_path('fb') => 1, - dir_path('fb', 'fba') => 1); + %Expect_Dir = (dir_path('fa_taint') => 1, + dir_path('fa_taint', 'faa') => 1, + dir_path('fa_taint', 'fab') => 1, + dir_path('fa_taint', 'fab', 'faba') => 1, + dir_path('fb_taint') => 1, + dir_path('fb_taint', 'fba') => 1); File::Find::find( {wanted => \&wanted_File_Dir, follow_fast => 1, no_chdir => 1, untaint => 1, untaint_pattern => - qr|^(.+)$| }, topdir('fa') ); + qr|^(.+)$| }, topdir('fa_taint') ); is( scalar(keys %Expect_File), 0, 'Found all files in symlink test' ); @@ -282,7 +282,7 @@ SKIP: { undef $@; eval {File::Find::find( {wanted => \&simple_wanted, follow => 1}, - topdir('fa') );}; + topdir('fa_taint') );}; like( $@, qr|Insecure dependency|, 'Not untainting causes death (good)' ); chdir($cwd_untainted); @@ -292,7 +292,7 @@ SKIP: { eval {File::Find::find( {wanted => \&simple_wanted, follow => 1, untaint => 1, untaint_pattern => - qr|^(NO_MATCH)$|}, topdir('fa') );}; + qr|^(NO_MATCH)$|}, topdir('fa_taint') );}; like( $@, qr|is still tainted|, 'Bat untaint pattern causes death (good)' ); chdir($cwd_untainted); @@ -303,7 +303,7 @@ SKIP: { eval {File::Find::find( {wanted => \&simple_wanted, untaint => 1, untaint_skip => 1, untaint_pattern => - qr|^(NO_MATCH)$|}, topdir('fa') );}; + qr|^(NO_MATCH)$|}, topdir('fa_taint') );}; like( $@, qr|insecure cwd|, 'Cwd not untainted with bad pattern (good)' ); chdir($cwd_untainted); diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/basic.t b/gnu/usr.bin/perl/ext/File-Glob/t/basic.t index f0363cdcdb5..174e91a6749 100755 --- a/gnu/usr.bin/perl/ext/File-Glob/t/basic.t +++ b/gnu/usr.bin/perl/ext/File-Glob/t/basic.t @@ -44,17 +44,20 @@ if (opendir(D, ".")) { @correct = grep { !/^\./ } sort readdir(D); closedir D; } -my @a = do {no warnings 'deprecated'; File::Glob::glob("*", 0);}; -@a = sort @a; -if (GLOB_ERROR) { - fail(GLOB_ERROR); -} else { - is_deeply(\@a, \@correct); +{ + local $@; + my $expect = + qr/File::Glob::glob\(\) was removed in perl 5\.30\. Use File::Glob::bsd_glob\(\) instead/; + eval { File::Glob::glob("*", 0); }; + like $@, $expect, + "Got expected error message for removal of File::Glob::glob()"; } chdir '..' or die "chdir .. $!"; # look up the user's home directory # should return a list with one item, and not set ERROR +my @a; + SKIP: { my ($name, $home); skip $^O, 1 if $^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'VMS' @@ -69,9 +72,11 @@ SKIP: { @a = bsd_glob("~$name", GLOB_TILDE); if (GLOB_ERROR) { - fail(GLOB_ERROR); + fail(GLOB_ERROR); } else { - is_deeply (\@a, [$home]); + is_deeply (\@a, [$home], + "GLOB_TILDE expands patterns that start with '~' to user name home directories" + ); } } # check plain tilde expansion @@ -121,7 +126,7 @@ SKIP: { if (GLOB_ERROR) { fail(GLOB_ERROR); } else { - is_deeply(\@a, ['TEST']); + is_deeply(\@a, ['TEST'], "GLOB_QUOTE works as expected"); } # check nonexistent checks @@ -130,14 +135,14 @@ if (GLOB_ERROR) { @a = bsd_glob("asdfasdf", 0); SKIP: { skip $^O, 1 if $^O eq 'MSWin32' || $^O eq 'NetWare'; - is_deeply(\@a, []); + is_deeply(\@a, [], "bsd_glob() works as expected for unmatched pattern and 0 flag"); } # check bad protections # should return an empty list, and set ERROR SKIP: { skip $^O, 2 if $^O eq 'MSWin32' or $^O eq 'NetWare' - or $^O eq 'os2' or $^O eq 'VMS' or $^O eq 'cygwin'; + or $^O eq 'os2' or $^O eq 'VMS' or $^O eq 'cygwin'; skip "AFS", 2 if Cwd::cwd() =~ m#^$Config{'afsroot'}#s; skip "running as root", 2 if not $>; @@ -147,13 +152,13 @@ SKIP: { rmdir $dir; local $TODO = 'hit VOS bug posix-956' if $^O eq 'vos'; - isnt(GLOB_ERROR, 0); - is_deeply(\@a, []); + isnt(GLOB_ERROR, 0, "GLOB_ERROR is not 0"); + is_deeply(\@a, [], "Got empty list as expected"); } # check for csh style globbing @a = bsd_glob('{a,b}', GLOB_BRACE | GLOB_NOMAGIC); -is_deeply(\@a, ['a', 'b']); +is_deeply(\@a, ['a', 'b'], "Check for csh-style globbing"); @a = bsd_glob( '{TES*,doesntexist*,a,b}', @@ -168,13 +173,13 @@ is_deeply(\@a, ['a', 'b']); map { $_ =~ s/test\.?/TEST/i } @a if $^O eq 'VMS'; print "# @a\n"; -is_deeply(\@a, ['TEST', 'a', 'b']); +is_deeply(\@a, ['TEST', 'a', 'b'], "Got list of 3 elements, including 'TEST'"); # "~" should expand to $ENV{HOME} { local $ENV{HOME} = "sweet home"; @a = bsd_glob('~', GLOB_TILDE | GLOB_NOMAGIC); - is_deeply(\@a, [$ENV{HOME}]); + is_deeply(\@a, [$ENV{HOME}], "~ expands to envvar \$HOME"); } # GLOB_ALPHASORT (default) should sort alphabetically regardless of case @@ -201,12 +206,12 @@ my $pat = "*.pl"; my @g_names = bsd_glob($pat, 0); print "# f_names = @f_names\n"; print "# g_names = @g_names\n"; -is_deeply(\@g_names, \@f_names); +is_deeply(\@g_names, \@f_names, "Got expected case-sensitive list of filenames"); my @g_alpha = bsd_glob($pat); print "# f_alpha = @f_alpha\n"; print "# g_alpha = @g_alpha\n"; -is_deeply(\@g_alpha, \@f_alpha); +is_deeply(\@g_alpha, \@f_alpha, "Got expected case-insensitive list of filenames"); unlink @f_names; chdir ".."; @@ -221,20 +226,21 @@ pass("Don't panic"); use File::Spec qw(); my($dir) = tempdir(CLEANUP => 1) - or die "Could not create temporary directory"; + or die "Could not create temporary directory"; for my $file (qw(a_dej a_ghj a_qej)) { - open my $fh, ">", File::Spec->catfile($dir, $file) - or die "Could not create file $dir/$file: $!"; - close $fh; + open my $fh, ">", File::Spec->catfile($dir, $file) + or die "Could not create file $dir/$file: $!"; + close $fh; } my $cwd = Cwd::cwd(); chdir $dir - or die "Could not chdir to $dir: $!"; + or die "Could not chdir to $dir: $!"; my(@glob_files) = glob("a*{d[e]}j"); chdir $cwd - or die "Could not chdir back to $cwd: $!"; + or die "Could not chdir back to $cwd: $!"; local $TODO = "home-made glob doesn't do regexes" if $^O eq 'VMS'; - is_deeply(\@glob_files, ['a_dej']); + is_deeply(\@glob_files, ['a_dej'], + "Got expected list: metacharacters and character class in pattern"); } # This used to segfault. diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/case.t b/gnu/usr.bin/perl/ext/File-Glob/t/case.t index 6362ef05863..5d8e0116886 100755 --- a/gnu/usr.bin/perl/ext/File-Glob/t/case.t +++ b/gnu/usr.bin/perl/ext/File-Glob/t/case.t @@ -34,10 +34,10 @@ cmp_ok(scalar @a, '>=', 3, 'explicit use of the GLOB_NOCASE flag'); SKIP: { skip 'Not Win32 or NetWare', 3 unless $^O eq 'MSWin32' || $^O eq 'NetWare'; - @a = File::Glob::glob("op\\g*.t"); + @a = File::Glob::bsd_glob("op\\g*.t"); cmp_ok(scalar @a, '>=', 8); mkdir "[]", 0; - @a = File::Glob::glob("\\[\\]", GLOB_QUOTE); + @a = File::Glob::bsd_glob("\\[\\]", GLOB_QUOTE); rmdir "[]"; is(scalar @a, 1); @a = bsd_glob("op\\*", GLOB_QUOTE); diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/rt131211.t b/gnu/usr.bin/perl/ext/File-Glob/t/rt131211.t index 4ac0d8729dc..96432de466e 100644 --- a/gnu/usr.bin/perl/ext/File-Glob/t/rt131211.t +++ b/gnu/usr.bin/perl/ext/File-Glob/t/rt131211.t @@ -61,13 +61,9 @@ is $count,10, "tried all the patterns without bailing out" or diag("elapsed_match=$elapsed_match elapsed_fail=$elapsed_fail"); -SKIP: { - skip "unstable or too small timing", 1 unless - $elapsed_match >= 0.001 && $elapsed_fail >= 0.001; - ok $elapsed_fail <= 10 * $elapsed_match, - "time to fail less than 10x the time to match" - or diag("elapsed_match=$elapsed_match elapsed_fail=$elapsed_fail"); -} +ok $elapsed_fail < 1 || $elapsed_fail <= 10 * $elapsed_match, + "time to fail should be less than 10x the time to match" + or diag("elapsed_match=$elapsed_match elapsed_fail=$elapsed_fail"); is "@got_files", catfile($path, $files[0]), "only got the expected file for xa*..b"; diff --git a/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t b/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t index 0e426d4dbcd..1cbfdc60181 100644 --- a/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t +++ b/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t @@ -1,4 +1,12 @@ #!./perl -w +# +# Exercise the error handling callback mechanism in gdbm. +# +# Try to trigger an error by surreptitiously closing the file handle which +# gdbm has opened. Note that this won't trigger an error in newer +# releases of the gdbm library, which uses mmap() rather than write() etc: +# so skip in that case. + use strict; use Test::More; @@ -16,7 +24,7 @@ BEGIN { use_ok('GDBM_File'); } -unlink <Op_dbmx*>; +unlink <fatal_dbmx*>; open my $fh, '<', $^X or die "Can't open $^X: $!"; my $fileno = fileno $fh; @@ -28,22 +36,31 @@ is((open $fh, "<&=$fileno"), undef, umask(0); my %h; -isa_ok(tie(%h, 'GDBM_File', 'Op_dbmx', GDBM_WRCREAT, 0640), 'GDBM_File'); +isa_ok(tie(%h, 'GDBM_File', 'fatal_dbmx', GDBM_WRCREAT, 0640), 'GDBM_File'); isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno") or diag("\$! = $!"); isnt(close $fh, undef, "close fileno $fileno, out from underneath the GDBM_File"); -is(eval { + +# store some data to a closed file handle + +my $res = eval { $h{Perl} = 'Rules'; untie %h; - 1; -}, undef, 'Trapped error when attempting to write to knobbled GDBM_File'); + 99; +}; -# Observed "File write error" and "lseek error" from two different systems. -# So there might be more variants. Important part was that we trapped the error -# via croak. -like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, - 'expected error message from GDBM_File'); +SKIP: { + skip "Can't trigger failure", 2 if (defined $res and $res == 99); + + is $res, undef, "eval should return undef"; + + # Observed "File write error" and "lseek error" from two different + # systems. So there might be more variants. Important part was that + # we trapped the error # via croak. + like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/, + 'expected error message from GDBM_File'); +} -unlink <Op_dbmx*>; +unlink <fatal_dbmx*>; diff --git a/gnu/usr.bin/perl/ext/POSIX/t/mb.t b/gnu/usr.bin/perl/ext/POSIX/t/mb.t new file mode 100644 index 00000000000..053693e6114 --- /dev/null +++ b/gnu/usr.bin/perl/ext/POSIX/t/mb.t @@ -0,0 +1,60 @@ +#!./perl + +# These tests are in a separate file, because they use fresh_perl_is() +# from test.pl. + +# The mb* functions use the "underlying locale" that is not affected by +# the Perl one. So we run the tests in a separate "fresh_perl" process +# with the correct LC_CTYPE set in the environment. + +BEGIN { + require Config; import Config; + if ($^O ne 'VMS' and $Config{'extensions'} !~ /\bPOSIX\b/) { + print "1..0\n"; + exit 0; + } + unshift @INC, "../../t"; + require 'loc_tools.pl'; + require 'charset_tools.pl'; + require 'test.pl'; +} + +plan tests => 4; + +use POSIX qw(); + +SKIP: { + skip("mblen() not present", 4) unless $Config{d_mblen}; + + is(&POSIX::mblen("a", &POSIX::MB_CUR_MAX), 1, 'mblen() basically works'); + + skip("LC_CTYPE locale support not available", 3) + unless locales_enabled('LC_CTYPE'); + + my $utf8_locale = find_utf8_ctype_locale(); + skip("no utf8 locale available", 3) unless $utf8_locale; + + local $ENV{LC_CTYPE} = $utf8_locale; + local $ENV{LC_ALL}; + delete $ENV{LC_ALL}; + + fresh_perl_like( + 'use POSIX; print &POSIX::MB_CUR_MAX', + qr/[4-6]/, {}, 'MB_CUR_MAX is at least 4 in a UTF-8 locale'); + + SKIP: { + my ($major, $minor, $rest) = $Config{osvers} =~ / (\d+) \. (\d+) .* /x; + skip("mblen() broken (at least for c.utf8) on early HP-UX", 2) + if $Config{osname} eq 'hpux' + && $major < 11 || ($major == 11 && $minor < 31); + fresh_perl_is( + 'use POSIX; print &POSIX::mblen("' + . I8_to_native("\x{c3}\x{28}") + . '", 2)', + -1, {}, 'mblen() recognizes invalid multibyte characters'); + + fresh_perl_is( + 'use POSIX; print &POSIX::mblen("\N{GREEK SMALL LETTER SIGMA}", 2)', + 2, {}, 'mblen() works on UTF-8 characters'); + } +} diff --git a/gnu/usr.bin/perl/ext/SDBM_File/t/corrupt.t b/gnu/usr.bin/perl/ext/SDBM_File/t/corrupt.t new file mode 100644 index 00000000000..f619b78b807 --- /dev/null +++ b/gnu/usr.bin/perl/ext/SDBM_File/t/corrupt.t @@ -0,0 +1,152 @@ +#!./perl +use strict; +use Test::More; +use MIME::Base64; +use File::Temp 'tempfile'; +use SDBM_File; +use Fcntl qw(O_RDWR); +use Errno qw(EINVAL); +use Config; + +$Config{byteorder} =~ /^1234(?:5678)?$/ + or plan skip_all => "test SDBM databases are little-endian"; +$Config{shortsize} == 2 + or plan skip_all => "test SDBM databases have short size 2"; + +my ($dirfh, $dirname) = tempfile(UNLINK => 1); +my ($pagfh, $pagname) = tempfile(UNLINK => 1); +close $dirfh; +close pagefh; + +# these might only fail under ASAN +while (my $testdata = do { local $/ = "END\n"; <DATA>; }) { + my ($note, $base64) = $testdata =~ /\A([^\n]+)\n(.*)/s + or die; + my $raw = decode_base64($base64); + open my $pagfh, ">:raw", $pagname + or die "Cannot recreate $pagname: $!"; + print $pagfh $base64; + close $pagfh; + open my $dirfh, ">:raw", $dirname + or die "Cannot truncate $dirname: $!"; + close $dirfh; + + my %dbm; + my $sdbm = tie %dbm, 'SDBM_File', $dirname, O_RDWR, 0666, $pagname; + + ok(tied %dbm, "$note: tied successfully"); + my $value = $dbm{foo}; + pass("$note: no crash fetching a named key"); + for my $key (sort keys %dbm) { + my $tmp = $dbm{$key}; + } + pass("$note: no crash iterating over keys"); + is(0+$!, EINVAL, "$note: errno set"); + ok($sdbm->error, "$note: error flag set"); +} + + +done_testing(); + +__DATA__ +132147 +CgD+g/4D/QP8A/sD2gPZA8wDywPIAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm +OmZxYlpYWEhaZ0ExbDFQY2R7U0hBfWhLVVdoQnVuZWx0R1NONHMwTi9MTU9wRzI3UT1jYmJhYQ== +END +132151 +AiD/A/4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAGZo +END +fuzz failure 54 +EADwA78DsQNpA1YDIgMWA8ECswJqAmACPQImAuEBywGqtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP9hwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAAAAAABtAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgs +eHh4YWJjZGVmZ2hpamtsbW5vcHFyNDg2NHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHjkeHh4eHh4eGFiY2RlZmdoaWprbG1ub3BxcnMy +MTU5eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eEYxMjM0NTY3NjI2eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 +eHh4eHh4eGFiY2RlZmdoaWoyMzU4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 +eHh4X3h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eDEyMzQ1Njc4 +MzE3MXh4eHh4eHh4eHiYeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhh +YmNkZWZnaGlqa2xtbm8zMDE2eHh4eLh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 +eHiqeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4MTIzNDU2Yzg5MDI3NjJ4eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eE14eHh4eHh4YWJjZGVmZ2hpamtsbW5vcA== +END +fuzz failure 181 +BAD/A8MDuAOduwAAAAAAAAAAAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eDEyMzQ1NjcyOTczeHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4MQ== +END +fuzz failure 695 +EADoA+cD3wN/A3kDIAMFA+wC3wKeApkCgQJ3AmgCYgJdtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAACTAAAAAAAAAAAAAAAAAAB4eHh4eGFiY2RlZnh4eHh4eHh4eHh4 +eHh4eGFiY2RlZjkyMzZ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgxMzUyMnh4eHh4eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4YWJjZGVm +Z2hpNTUxOXh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhhYmNkZWZnaGlqa2xtbm9wcXJzdHV2dzg1 +NTF4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eDEyMTE3NHh4eHh4eHh4eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 +eHh4eHh4eHh4eHh4eHh4eHh4eHh4eDEyMzQ1NTMyeGFiY2RlZmdoaWprbG1ub3BxcnN0ODE1Mg== +END diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/utf8_warn_base.pl b/gnu/usr.bin/perl/ext/XS-APItest/t/utf8_warn_base.pl index 0c9e20b9cac..2359ca7fec2 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/utf8_warn_base.pl +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/utf8_warn_base.pl @@ -699,6 +699,73 @@ sub do_warnings_test(@) return $succeeded; } +my $min_cont = (isASCII) ? 0x80 : 0xA0; +my $continuation_shift = (isASCII) ? 6 : 5; +my $continuation_mask = (1 << $continuation_shift) - 1; + +sub isUTF8_CHAR($$) { # Uses first principals to determine if this is legal + # (Doesn't work if overflows) + my ($string, $length) = @_; + + # Uses first principals to calculate if $string is legal + + return 0 if $length <= 0; + + my $first = ord substr($string, 0, 1); + + # Invariant + return 1 if $length == 1 && $first < $min_cont; + + return 0 if $first < 0xC0; # Starts with continuation + + # Calculate the number of leading 1 bits + my $utf8skip = 0; + my $bits = $first; + do { + $utf8skip++; + $bits = ($bits << 1) & 0xFF; + } while ($bits & 0x80); + + return 0 if $utf8skip != $length; + + # Acuumulate the $code point. The remaining bits in the start byte count + # towards it + my $cp = $bits >> $utf8skip; + + for my $i (1 .. $length - 1) { + my $ord = ord substr($string, $i, 1); + + # Wrong if not a continuation + return 0 if $ord < $min_cont || $ord >= 0xC0; + + $cp = ($cp << $continuation_shift) + | ($ord & $continuation_mask); + } + + # If the calculated value can be expressed in fewer bytes than were passed + # in, is an illegal overlong. XXX if 'chr' is not working properly, this + # may not be right + my $chr = chr $cp; + utf8::upgrade($chr); + + use bytes; + return 0 if length $chr < $length; + + return 1; +} + +sub start_mark($) { + my $len = shift; + return 0xFF if $len > 7; + return (0xFF & (0xFE << (7 - $len))); +} + +sub start_mask($) { + my $len = shift; + return 0 if $len > 7; + return 0x1F >> ($len - 2); +} + # This test is split into this number of files. my $num_test_files = $ENV{TEST_JOBS} || 1; $num_test_files = 10 if $num_test_files > 10; @@ -707,6 +774,208 @@ $num_test_files = 10 if $num_test_files > 10; my $tested_CHECK_ONLY = 0; my $test_count = -1; + +# By setting this environment variable to this particular value, we test +# essentially all combinations of potential UTF-8, so that can get a +# comprehensive test of the decoding routine. This test assumes the routine +# that does the translation from code point to UTF-8 is working. An assert +# can be used in the routine to make sure that the dfa is working precisely +# correctly, and any flaws in it aren't being masked by the remainder of the +# function. +if ($::TEST_CHUNK == 0 +&& $ENV{PERL_DEBUG_FULL_TEST} +&& $ENV{PERL_DEBUG_FULL_TEST} == 97) +{ + my $min_cont_mask = $min_cont | 0xF; + my @bytes = ( 0, # Placeholder to signify to use an empty string "" + ord 'A',# We assume that all the invariant characters are + # properly in the same class, so this is an exemplar + # character + $min_cont .. 0xFF # But test every non-invariant individually + ); + my $shift = (isASCII) ? 6 : 5; + my $mark = $min_cont; + my $mask = (1 << $shift) - 1; + for my $byte1 (@bytes) { + for my $byte2 (@bytes) { + last if $byte2 && ! $byte1; # Don't test empty preceding byte + + last if $byte2 && $byte1 < 0xC0; # No need to test more than a + # single byte unless start byte + # indicates those. + + for my $byte3 (@bytes) { + last if $byte3 && ! $byte2; + last if $byte3 && $byte1 < 0xE0; # Only test 3 bytes for + # 3-byte start byte + + # If the preceding byte is a start byte, it should fail, and + # there is no need to test illegal bytes that follow. + # Instead, limit ourselves to just a few legal bytes that + # could follow. This cuts down tremendously on the number of + # tests executed. + next if $byte2 >= 0xC0 + && $byte3 >= $min_cont + && ($byte3 & $min_cont_mask) != $min_cont; + + for my $byte4 (@bytes) { + last if $byte4 && ! $byte3; + last if $byte4 && $byte1 < 0xF0; # Only test 4 bytes for + # 4 byte strings + + # Like for byte 3, we limit things that come after a + # mispositioned start-byte to just a few things that + # otherwise would be legal + next if ($byte2 >= 0xC0 || $byte3 >= 0xC0) + && $byte4 >= $min_cont + && ($byte4 & $min_cont_mask) != $min_cont; + + for my $byte5 (@bytes) { + last if $byte5 && ! $byte4; + last if $byte5 && $byte1 < 0xF8; # Only test 5 bytes for + # 5 byte strings + + # Like for byte 4, we limit things that come after a + # mispositioned start-byte to just a few things that + # otherwise would be legal + next if ( $byte2 >= 0xC0 + || $byte3 >= 0xC0 + || $byte4 >= 0xC0) + && $byte4 >= $min_cont + && ($byte4 & $min_cont_mask) != $min_cont; + + my $string = ""; + $string .= chr $byte1 if $byte1; + $string .= chr $byte2 if $byte2; + $string .= chr $byte3 if $byte3; + $string .= chr $byte4 if $byte4; + $string .= chr $byte5 if $byte5; + + my $length = length $string; + next unless $length; + last if $byte1 >= ((isASCII) ? 0xF6 : 0xFA); + + my $native = I8_to_native($string); + my $is_valid = isUTF8_CHAR($native, $length); + my $got_valid = test_isUTF8_CHAR($native, $length); + my $got_strict + = test_isSTRICT_UTF8_CHAR($native, $length); + my $got_C9 + = test_isC9_STRICT_UTF8_CHAR($native, $length); + my $ret = test_utf8n_to_uvchr_msgs($native, $length, + $::UTF8_WARN_ILLEGAL_INTERCHANGE); + my $is_strict = $is_valid; + my $is_C9 = $is_valid; + + if ($is_valid) { + + # Here, is legal UTF-8. Verify that it returned + # the correct code point, and if so, that it + # correctly classifies the result. + my $cp = $ret->[0]; + + my $should_be_string; + if ($length == 1) { + $should_be_string = chr $cp; + } + else { + + # Starting with the code point, use first + # principals to find the equivalen UTF-8 + # string + my @bytes; + my $uv = $cp; + for (my $i = $length - 1; $i > 0; $i--) { + $bytes[$i] = chr I8_to_native(($uv & $mask) + | $mark); + $uv >>= $shift; + } + $bytes[0] = chr I8_to_native(( $uv + & start_mask($length)) + | start_mark($length)); + $should_be_string = join "", @bytes; + } + + # If the original string and the inverse are the + # same, it worked. + if (is($native, $should_be_string, + "utf8n_to_uvchr_msgs(" + . display_bytes($native) + . ") returns correct uv=0x" + . sprintf ("%x", $cp))) + { + my $is_surrogate = $cp >= 0xD800 + && $cp <= 0xDFFF; + my $got_surrogate + = ($ret->[2] & $::UTF8_GOT_SURROGATE) != 0; + $is_strict = 0 if $is_surrogate; + $is_C9 = 0 if $is_surrogate; + + my $is_super = $cp > 0x10FFFF; + my $got_super + = ($ret->[2] & $::UTF8_GOT_SUPER) != 0; + $is_strict = 0 if $is_super; + $is_C9 = 0 if $is_super; + + my $is_nonchar = ! $is_super + && ( ($cp & 0xFFFE) == 0xFFFE + || ($cp >= 0xFDD0 && $cp <= 0xFDEF)); + my $got_nonchar + = ($ret->[2] & $::UTF8_GOT_NONCHAR) != 0; + $is_strict = 0 if $is_nonchar; + + is($got_surrogate, $is_surrogate, + " And correctly flagged it as" + . ((! $is_surrogate) ? " not" : "") + . " being a surrogate"); + is($got_super, $is_super, + " And correctly flagged it as" + . ((! $is_super) ? " not" : "") + . " being above Unicode"); + is($got_nonchar, $is_nonchar, + " And correctly flagged it as" + . ((! $is_nonchar) ? " not" : "") + . " being a non-char"); + } + + # This is how we exit the loop normally if things + # are working. The fail-safe code above is used + # when they aren't. + goto done if $cp > 0x140001; + } + else { + is($ret->[0], 0, "utf8n_to_uvchr_msgs(" + . display_bytes($native) + . ") correctly returns error"); + if (! ($ret->[2] & ($::UTF8_GOT_SHORT + |$::UTF8_GOT_NON_CONTINUATION + |$::UTF8_GOT_LONG))) + { + is($ret->[2] & ( $::UTF8_GOT_NONCHAR + |$::UTF8_GOT_SURROGATE + |$::UTF8_GOT_SUPER), 0, + " And isn't a surrogate, non-char, nor" + . " above Unicode"); + } + } + + is($got_valid == 0, $is_valid == 0, + " And isUTF8_CHAR() correctly returns " + . (($got_valid == 0) ? "0" : "non-zero")); + is($got_strict == 0, $is_strict == 0, + " And isSTRICT_UTF8_CHAR() correctly returns " + . (($got_strict == 0) ? "0" : "non-zero")); + is($got_C9 == 0, $is_C9 == 0, + " And isC9_UTF8_CHAR() correctly returns " + . (($got_C9 == 0) ? "0" : "non-zero")); + } + } + } + } + } + done: +} + foreach my $test (@tests) { $test_count++; next if $test_count % $num_test_files != $::TEST_CHUNK; diff --git a/gnu/usr.bin/perl/ext/re/t/qr.t b/gnu/usr.bin/perl/ext/re/t/qr.t index cf51cbd8b1e..25694f80f79 100644 --- a/gnu/usr.bin/perl/ext/re/t/qr.t +++ b/gnu/usr.bin/perl/ext/re/t/qr.t @@ -9,5 +9,4 @@ BEGIN { } use Test::More tests => 1; -use re 'Debug'; isa_ok( qr//, "Regexp" ); diff --git a/gnu/usr.bin/perl/hints/minix.sh b/gnu/usr.bin/perl/hints/minix.sh new file mode 100644 index 00000000000..d5c0a39dd0e --- /dev/null +++ b/gnu/usr.bin/perl/hints/minix.sh @@ -0,0 +1,147 @@ +# hints/minix.sh +# +# Please check with packages@netbsd.org before making modifications +# to this file. + +case "$archname" in +'') + archname=`uname -m`-${osname} + ;; +esac + +# NetBSD keeps dynamic loading dl*() functions in /usr/lib/crt0.o, +# so Configure doesn't find them (unless you abandon the nm scan). +# +case "$osvers" in +*) + if test -f /usr/libexec/ld.elf_so; then + # ELF + d_dlopen=$define + d_dlerror=$define + cccdlflags="-DPIC -fPIC $cccdlflags" + lddlflags="-shared $lddlflags" + rpathflag="-Wl,-rpath," + ccdlflags="-Wl,-E $ccdlflags" + elif test -f /usr/libexec/ld.so; then + # a.out + d_dlopen=$define + d_dlerror=$define + cccdlflags="-DPIC -fPIC $cccdlflags" + lddlflags="-Bshareable $lddlflags" + rpathflag="-R" + else + d_dlopen=$undef + rpathflag= + fi + d_getprotoent_r="$undef" + d_getprotobyname_r="$undef" + d_getprotobynumber_r="$undef" + d_setprotoent_r="$undef" + d_endprotoent_r="$undef" + d_getservent_r="$undef" + d_getservbyname_r="$undef" + d_getservbyport_r="$undef" + d_setservent_r="$undef" + d_endservent_r="$undef" + d_gethostbyname_r="$undef" + d_gethostbyaddr2_r="$undef" + d_gethostbyaddr_r="$undef" + d_sethostent_r="$undef" + d_gethostent_r="$undef" + d_endhostent_r="$undef" + d_getprotoent_r_proto="0" + d_getprotobyname_r_proto="0" + d_getprotobynumber_r_proto="0" + d_setprotoent_r_proto="0" + d_endprotoent_r_proto="0" + d_getservent_r_proto="0" + d_getservbyname_r_proto="0" + d_getservbyport_r_proto="0" + d_setservent_r_proto="0" + d_endservent_r_proto="0" + d_gethostbyname_r_proto="0" + d_gethostbyaddr2_r_proto="0" + d_gethostbyaddr_r_proto="0" + d_sethostent_r_proto="0" + d_endhostent_r_proto="0" + d_gethostent_r_proto="0" + ;; +esac + +# there's no problem with vfork. +usevfork=true + +# This is there but in machine/ieeefp_h. +ieeefp_h="define" + +# This script UU/usethreads.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in +$define|true|[yY]*) + lpthread= + for xxx in pthread; do + for yyy in $loclibpth $plibpth $glibpth dummy; do + zzz=$yyy/lib$xxx.a + if test -f "$zzz"; then + lpthread=$xxx + break; + fi + zzz=$yyy/lib$xxx.so + if test -f "$zzz"; then + lpthread=$xxx + break; + fi + zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null` + if test "X$zzz" != X; then + lpthread=$xxx + break; + fi + done + if test "X$lpthread" != X; then + break; + fi + done + if test "X$lpthread" != X; then + # Add -lpthread. + libswanted="$libswanted $lpthread" + # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r. + # This will be revisited when NetBSD gains a native pthreads + # implementation. + else + echo "$0: No POSIX threads library (-lpthread) found. " \ + "You may want to install GNU pth. Aborting." >&4 + exit 1 + fi + unset lpthread +esac +EOCBU + +# Set sensible defaults for Minix: look for local software in +# /usr/local, plus the build prefix, which might or might not be +# /usr/pkg. +# +loclibpth="/usr/local/lib ${prefix}/lib" +locincpth="/usr/local/include ${prefix}/include" + +case "$rpathflag" in +'') + ldflags= + ;; +*) + ldflags= + for yyy in $loclibpth; do + ldflags="$ldflags $rpathflag$yyy" + done + ;; +esac + +# malloc wrap works +case "$usemallocwrap" in +'') usemallocwrap='define' ;; +esac + +# don't use perl malloc by default +case "$usemymalloc" in +'') usemymalloc=n ;; +esac diff --git a/gnu/usr.bin/perl/lib/Config/Extensions.pm b/gnu/usr.bin/perl/lib/Config/Extensions.pm index 5c241e97aea..b92ebf8ab82 100644 --- a/gnu/usr.bin/perl/lib/Config/Extensions.pm +++ b/gnu/usr.bin/perl/lib/Config/Extensions.pm @@ -4,7 +4,7 @@ our (%Extensions, $VERSION, @ISA, @EXPORT_OK); use Config; require Exporter; -$VERSION = '0.02'; +$VERSION = '0.03'; @ISA = 'Exporter'; @EXPORT_OK = '%Extensions'; @@ -17,6 +17,7 @@ foreach my $type (qw(static dynamic nonxs)) { 1; __END__ + =head1 NAME Config::Extensions - hash lookup of which core extensions were built. diff --git a/gnu/usr.bin/perl/lib/Internals.pod b/gnu/usr.bin/perl/lib/Internals.pod index 4a1144afd6d..454ab0deb50 100644 --- a/gnu/usr.bin/perl/lib/Internals.pod +++ b/gnu/usr.bin/perl/lib/Internals.pod @@ -59,7 +59,7 @@ each internal variable type. =item hv_clear_placeholders(%hash) Clear any placeholders from a locked hash. Should not be used directly. -You should use the wrapper functions providewd by Hash::Util instead. +You should use the wrapper functions provided by Hash::Util instead. As of 5.25 also available as C< Hash::Util::_clear_placeholders(%hash) > =back diff --git a/gnu/usr.bin/perl/lib/deprecate.pm b/gnu/usr.bin/perl/lib/deprecate.pm index 47bc11253e9..995322c4777 100644 --- a/gnu/usr.bin/perl/lib/deprecate.pm +++ b/gnu/usr.bin/perl/lib/deprecate.pm @@ -1,7 +1,7 @@ package deprecate; use strict; use warnings; -our $VERSION = 0.03; +our $VERSION = 0.04; # our %Config can ignore %Config::Config, e.g. for testing our %Config; @@ -71,26 +71,61 @@ __END__ =head1 NAME -deprecate - Perl pragma for deprecating the core version of a module +deprecate - Perl pragma for deprecating the inclusion of a module in core =head1 SYNOPSIS - use deprecate; # always deprecate the module in which this occurs - - use if $] > 5.010, 'deprecate'; # conditionally deprecate the module + use deprecate; # warn about future absence if loaded from core =head1 DESCRIPTION -This module is used using C<use deprecate;> (or something that calls -C<< deprecate->import() >>, for example C<use if COND, deprecate;>). +This pragma simplifies the maintenance of dual-life modules that will no longer +be included in the Perl core in a future Perl release, but are still included +currently. + +The purpose of the pragma is to alert users to the status of such a module by +issuing a warning that encourages them to install the module from CPAN, so that +a future upgrade to a perl which omits the module will not break their code. + +This warning will only be issued if the module was loaded from a core library +directory, which allows the C<use deprecate> line to be included in the CPAN +version of the module. Because the pragma remains silent when the module is run +from a non-core library directory, the pragma call does not need to be patched +into or out of either the core or CPAN version of the module. The exact same +code can be shipped for either purpose. + +=head2 Important Caveat + +Note that when a module installs from CPAN to a core library directory rather +than the site library directories, the user gains no protection from having +installed it. + +At the same time, this pragma cannot detect when such a module has installed +from CPAN to the core library, and so it would endlessly and uselessly exhort +the user to upgrade. + +Therefore modules that can install from CPAN to the core library must make sure +not to call this pragma when they have done so. Generally this means that the +exact logic from the installer must be mirrored inside the module. E.g.: + + # Makefile.PL + WriteMakefile( + # ... + INSTALLDIRS => ( "$]" >= 5.011 ? 'site' : 'perl' ), + ); + + # lib/Foo/Bar.pm + use if "$]" >= 5.011, 'deprecate'; + +(The above example shows the most important case of this: when the target is +a Perl older than 5.12 (where the core library directories take precedence over +the site library directories) and the module being installed was included in +core in that Perl version. Under those circumstances, an upgrade of the module +from CPAN is only possible by installing to the core library.) -If the module that includes C<use deprecate> is located in a core library -directory, a deprecation warning is issued, encouraging the user to use -the version on CPAN. If that module is located in a site library, it is -the CPAN version, and no warning is issued. -=head2 EXPORT +=head1 EXPORT None by default. The only method is C<import>, called by C<use deprecate;>. diff --git a/gnu/usr.bin/perl/lib/perl5db/t/rt-124203 b/gnu/usr.bin/perl/lib/perl5db/t/rt-124203 new file mode 100644 index 00000000000..85ab7b0b27c --- /dev/null +++ b/gnu/usr.bin/perl/lib/perl5db/t/rt-124203 @@ -0,0 +1,7 @@ +use threads; +my $thr = threads->create(\&sub1); +sub sub1 { + print("In the thread\n"); +} +$thr->join; +print "Finished\n";
\ No newline at end of file diff --git a/gnu/usr.bin/perl/lib/perl5db/t/rt-124203b b/gnu/usr.bin/perl/lib/perl5db/t/rt-124203b new file mode 100644 index 00000000000..a5996215662 --- /dev/null +++ b/gnu/usr.bin/perl/lib/perl5db/t/rt-124203b @@ -0,0 +1,13 @@ +use threads; +print "PID $$\n"; +my $x; +sub sub1 { + print("In the thread\n"); +} +sub foo:lvalue { + my $thr = threads->create(\&sub1); + $thr->join; + $x; +} +foo() = "One"; +print "Finished $x\n"; diff --git a/gnu/usr.bin/perl/lib/unicore/EmojiData.txt b/gnu/usr.bin/perl/lib/unicore/EmojiData.txt new file mode 100644 index 00000000000..20506edf5a8 --- /dev/null +++ b/gnu/usr.bin/perl/lib/unicore/EmojiData.txt @@ -0,0 +1,770 @@ +# EmojiData-12.1.0.txt +# XXX Note first line changed for mktables +# Date: 2019-01-15, 12:10:05 GMT +# © 2019 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Emoji Data for UTS #51 +# Version: 12.0 +# +# For documentation and usage, see http://www.unicode.org/reports/tr51 +# +# Format: +# <codepoint(s)> ; <property> # <comments> +# Note: there is no guarantee as to the structure of whitespace or comments +# +# Characters and sequences are listed in code point order. Users should be shown a more natural order. +# See the CLDR collation order for Emoji. + + +# ================================================ + +# All omitted code points have Emoji=No +# @missing: 0000..10FFFF ; Emoji ; No + +0023 ; Emoji # 1.1 [1] (#ï¸) number sign +002A ; Emoji # 1.1 [1] (*ï¸) asterisk +0030..0039 ; Emoji # 1.1 [10] (0ï¸..9ï¸) digit zero..digit nine +00A9 ; Emoji # 1.1 [1] (©ï¸) copyright +00AE ; Emoji # 1.1 [1] (®ï¸) registered +203C ; Emoji # 1.1 [1] (‼ï¸) double exclamation mark +2049 ; Emoji # 3.0 [1] (â‰ï¸) exclamation question mark +2122 ; Emoji # 1.1 [1] (â„¢ï¸) trade mark +2139 ; Emoji # 3.0 [1] (ℹï¸) information +2194..2199 ; Emoji # 1.1 [6] (↔ï¸..↙ï¸) left-right arrow..down-left arrow +21A9..21AA ; Emoji # 1.1 [2] (↩ï¸..↪ï¸) right arrow curving left..left arrow curving right +231A..231B ; Emoji # 1.1 [2] (⌚..⌛) watch..hourglass done +2328 ; Emoji # 1.1 [1] (⌨ï¸) keyboard +23CF ; Emoji # 4.0 [1] (âï¸) eject button +23E9..23F3 ; Emoji # 6.0 [11] (â©..â³) fast-forward button..hourglass not done +23F8..23FA ; Emoji # 7.0 [3] (â¸ï¸..âºï¸) pause button..record button +24C2 ; Emoji # 1.1 [1] (â“‚ï¸) circled M +25AA..25AB ; Emoji # 1.1 [2] (â–ªï¸..â–«ï¸) black small square..white small square +25B6 ; Emoji # 1.1 [1] (â–¶ï¸) play button +25C0 ; Emoji # 1.1 [1] (â—€ï¸) reverse button +25FB..25FE ; Emoji # 3.2 [4] (â—»ï¸..â—¾) white medium square..black medium-small square +2600..2604 ; Emoji # 1.1 [5] (☀ï¸..☄ï¸) sun..comet +260E ; Emoji # 1.1 [1] (☎ï¸) telephone +2611 ; Emoji # 1.1 [1] (☑ï¸) check box with check +2614..2615 ; Emoji # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2618 ; Emoji # 4.1 [1] (☘ï¸) shamrock +261D ; Emoji # 1.1 [1] (â˜ï¸) index pointing up +2620 ; Emoji # 1.1 [1] (☠ï¸) skull and crossbones +2622..2623 ; Emoji # 1.1 [2] (☢ï¸..☣ï¸) radioactive..biohazard +2626 ; Emoji # 1.1 [1] (☦ï¸) orthodox cross +262A ; Emoji # 1.1 [1] (☪ï¸) star and crescent +262E..262F ; Emoji # 1.1 [2] (☮ï¸..☯ï¸) peace symbol..yin yang +2638..263A ; Emoji # 1.1 [3] (☸ï¸..☺ï¸) wheel of dharma..smiling face +2640 ; Emoji # 1.1 [1] (♀ï¸) female sign +2642 ; Emoji # 1.1 [1] (♂ï¸) male sign +2648..2653 ; Emoji # 1.1 [12] (♈..♓) Aries..Pisces +265F..2660 ; Emoji # 1.1 [2] (♟ï¸..â™ ï¸) chess pawn..spade suit +2663 ; Emoji # 1.1 [1] (♣ï¸) club suit +2665..2666 ; Emoji # 1.1 [2] (♥ï¸..♦ï¸) heart suit..diamond suit +2668 ; Emoji # 1.1 [1] (♨ï¸) hot springs +267B ; Emoji # 3.2 [1] (â™»ï¸) recycling symbol +267E..267F ; Emoji # 4.1 [2] (♾ï¸..♿) infinity..wheelchair symbol +2692..2697 ; Emoji # 4.1 [6] (âš’ï¸..âš—ï¸) hammer and pick..alembic +2699 ; Emoji # 4.1 [1] (âš™ï¸) gear +269B..269C ; Emoji # 4.1 [2] (âš›ï¸..âšœï¸) atom symbol..fleur-de-lis +26A0..26A1 ; Emoji # 4.0 [2] (âš ï¸..âš¡) warning..high voltage +26AA..26AB ; Emoji # 4.1 [2] (⚪..âš«) white circle..black circle +26B0..26B1 ; Emoji # 4.1 [2] (âš°ï¸..âš±ï¸) coffin..funeral urn +26BD..26BE ; Emoji # 5.2 [2] (âš½..âš¾) soccer ball..baseball +26C4..26C5 ; Emoji # 5.2 [2] (⛄..â›…) snowman without snow..sun behind cloud +26C8 ; Emoji # 5.2 [1] (⛈ï¸) cloud with lightning and rain +26CE ; Emoji # 6.0 [1] (⛎) Ophiuchus +26CF ; Emoji # 5.2 [1] (â›ï¸) pick +26D1 ; Emoji # 5.2 [1] (⛑ï¸) rescue worker’s helmet +26D3..26D4 ; Emoji # 5.2 [2] (⛓ï¸..â›”) chains..no entry +26E9..26EA ; Emoji # 5.2 [2] (⛩ï¸..⛪) shinto shrine..church +26F0..26F5 ; Emoji # 5.2 [6] (â›°ï¸..⛵) mountain..sailboat +26F7..26FA ; Emoji # 5.2 [4] (â›·ï¸..⛺) skier..tent +26FD ; Emoji # 5.2 [1] (⛽) fuel pump +2702 ; Emoji # 1.1 [1] (✂ï¸) scissors +2705 ; Emoji # 6.0 [1] (✅) check mark button +2708..2709 ; Emoji # 1.1 [2] (✈ï¸..✉ï¸) airplane..envelope +270A..270B ; Emoji # 6.0 [2] (✊..✋) raised fist..raised hand +270C..270D ; Emoji # 1.1 [2] (✌ï¸..âœï¸) victory hand..writing hand +270F ; Emoji # 1.1 [1] (âœï¸) pencil +2712 ; Emoji # 1.1 [1] (✒ï¸) black nib +2714 ; Emoji # 1.1 [1] (✔ï¸) check mark +2716 ; Emoji # 1.1 [1] (✖ï¸) multiplication sign +271D ; Emoji # 1.1 [1] (âœï¸) latin cross +2721 ; Emoji # 1.1 [1] (✡ï¸) star of David +2728 ; Emoji # 6.0 [1] (✨) sparkles +2733..2734 ; Emoji # 1.1 [2] (✳ï¸..✴ï¸) eight-spoked asterisk..eight-pointed star +2744 ; Emoji # 1.1 [1] (â„ï¸) snowflake +2747 ; Emoji # 1.1 [1] (â‡ï¸) sparkle +274C ; Emoji # 6.0 [1] (âŒ) cross mark +274E ; Emoji # 6.0 [1] (âŽ) cross mark button +2753..2755 ; Emoji # 6.0 [3] (â“..â•) question mark..white exclamation mark +2757 ; Emoji # 5.2 [1] (â—) exclamation mark +2763..2764 ; Emoji # 1.1 [2] (â£ï¸..â¤ï¸) heart exclamation..red heart +2795..2797 ; Emoji # 6.0 [3] (âž•..âž—) plus sign..division sign +27A1 ; Emoji # 1.1 [1] (âž¡ï¸) right arrow +27B0 ; Emoji # 6.0 [1] (âž°) curly loop +27BF ; Emoji # 6.0 [1] (âž¿) double curly loop +2934..2935 ; Emoji # 3.2 [2] (⤴ï¸..⤵ï¸) right arrow curving up..right arrow curving down +2B05..2B07 ; Emoji # 4.0 [3] (⬅ï¸..⬇ï¸) left arrow..down arrow +2B1B..2B1C ; Emoji # 5.1 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji # 5.1 [1] (â) star +2B55 ; Emoji # 5.2 [1] (â•) hollow red circle +3030 ; Emoji # 1.1 [1] (〰ï¸) wavy dash +303D ; Emoji # 3.2 [1] (〽ï¸) part alternation mark +3297 ; Emoji # 1.1 [1] (㊗ï¸) Japanese “congratulations†button +3299 ; Emoji # 1.1 [1] (㊙ï¸) Japanese “secret†button +1F004 ; Emoji # 5.1 [1] (🀄) mahjong red dragon +1F0CF ; Emoji # 6.0 [1] (ðŸƒ) joker +1F170..1F171 ; Emoji # 6.0 [2] (🅰ï¸..🅱ï¸) A button (blood type)..B button (blood type) +1F17E ; Emoji # 6.0 [1] (🅾ï¸) O button (blood type) +1F17F ; Emoji # 5.2 [1] (🅿ï¸) P button +1F18E ; Emoji # 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji # 6.0 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201..1F202 ; Emoji # 6.0 [2] (ðŸˆ..🈂ï¸) Japanese “here†button..Japanese “service charge†button +1F21A ; Emoji # 5.2 [1] (🈚) Japanese “free of charge†button +1F22F ; Emoji # 5.2 [1] (🈯) Japanese “reserved†button +1F232..1F23A ; Emoji # 6.0 [9] (🈲..🈺) Japanese “prohibited†button..Japanese “open for business†button +1F250..1F251 ; Emoji # 6.0 [2] (ðŸ‰..🉑) Japanese “bargain†button..Japanese “acceptable†button +1F300..1F320 ; Emoji # 6.0 [33] (🌀..🌠) cyclone..shooting star +1F321 ; Emoji # 7.0 [1] (🌡ï¸) thermometer +1F324..1F32C ; Emoji # 7.0 [9] (🌤ï¸..🌬ï¸) sun behind small cloud..wind face +1F32D..1F32F ; Emoji # 8.0 [3] (ðŸŒ..🌯) hot dog..burrito +1F330..1F335 ; Emoji # 6.0 [6] (🌰..🌵) chestnut..cactus +1F336 ; Emoji # 7.0 [1] (🌶ï¸) hot pepper +1F337..1F37C ; Emoji # 6.0 [70] (🌷..ðŸ¼) tulip..baby bottle +1F37D ; Emoji # 7.0 [1] (ðŸ½ï¸) fork and knife with plate +1F37E..1F37F ; Emoji # 8.0 [2] (ðŸ¾..ðŸ¿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji # 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F396..1F397 ; Emoji # 7.0 [2] (🎖ï¸..🎗ï¸) military medal..reminder ribbon +1F399..1F39B ; Emoji # 7.0 [3] (🎙ï¸..🎛ï¸) studio microphone..control knobs +1F39E..1F39F ; Emoji # 7.0 [2] (🎞ï¸..🎟ï¸) film frames..admission tickets +1F3A0..1F3C4 ; Emoji # 6.0 [37] (🎠..ðŸ„) carousel horse..person surfing +1F3C5 ; Emoji # 7.0 [1] (ðŸ…) sports medal +1F3C6..1F3CA ; Emoji # 6.0 [5] (ðŸ†..ðŸŠ) trophy..person swimming +1F3CB..1F3CE ; Emoji # 7.0 [4] (ðŸ‹ï¸..ðŸŽï¸) person lifting weights..racing car +1F3CF..1F3D3 ; Emoji # 8.0 [5] (ðŸ..ðŸ“) cricket game..ping pong +1F3D4..1F3DF ; Emoji # 7.0 [12] (ðŸ”ï¸..ðŸŸï¸) snow-capped mountain..stadium +1F3E0..1F3F0 ; Emoji # 6.0 [17] (ðŸ ..ðŸ°) house..castle +1F3F3..1F3F5 ; Emoji # 7.0 [3] (ðŸ³ï¸..ðŸµï¸) white flag..rosette +1F3F7 ; Emoji # 7.0 [1] (ðŸ·ï¸) label +1F3F8..1F3FF ; Emoji # 8.0 [8] (ðŸ¸..ðŸ¿) badminton..dark skin tone +1F400..1F43E ; Emoji # 6.0 [63] (ðŸ€..ðŸ¾) rat..paw prints +1F43F ; Emoji # 7.0 [1] (ðŸ¿ï¸) chipmunk +1F440 ; Emoji # 6.0 [1] (👀) eyes +1F441 ; Emoji # 7.0 [1] (ðŸ‘ï¸) eye +1F442..1F4F7 ; Emoji # 6.0[182] (👂..📷) ear..camera +1F4F8 ; Emoji # 7.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji # 6.0 [4] (📹..📼) video camera..videocassette +1F4FD ; Emoji # 7.0 [1] (📽ï¸) film projector +1F4FF ; Emoji # 8.0 [1] (📿) prayer beads +1F500..1F53D ; Emoji # 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button +1F549..1F54A ; Emoji # 7.0 [2] (🕉ï¸..🕊ï¸) om..dove +1F54B..1F54E ; Emoji # 8.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F567 ; Emoji # 6.0 [24] (ðŸ•..🕧) one o’clock..twelve-thirty +1F56F..1F570 ; Emoji # 7.0 [2] (🕯ï¸..🕰ï¸) candle..mantelpiece clock +1F573..1F579 ; Emoji # 7.0 [7] (🕳ï¸..🕹ï¸) hole..joystick +1F57A ; Emoji # 9.0 [1] (🕺) man dancing +1F587 ; Emoji # 7.0 [1] (🖇ï¸) linked paperclips +1F58A..1F58D ; Emoji # 7.0 [4] (🖊ï¸..ðŸ–ï¸) pen..crayon +1F590 ; Emoji # 7.0 [1] (ðŸ–ï¸) hand with fingers splayed +1F595..1F596 ; Emoji # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji # 9.0 [1] (🖤) black heart +1F5A5 ; Emoji # 7.0 [1] (🖥ï¸) desktop computer +1F5A8 ; Emoji # 7.0 [1] (🖨ï¸) printer +1F5B1..1F5B2 ; Emoji # 7.0 [2] (🖱ï¸..🖲ï¸) computer mouse..trackball +1F5BC ; Emoji # 7.0 [1] (🖼ï¸) framed picture +1F5C2..1F5C4 ; Emoji # 7.0 [3] (🗂ï¸..🗄ï¸) card index dividers..file cabinet +1F5D1..1F5D3 ; Emoji # 7.0 [3] (🗑ï¸..🗓ï¸) wastebasket..spiral calendar +1F5DC..1F5DE ; Emoji # 7.0 [3] (🗜ï¸..🗞ï¸) clamp..rolled-up newspaper +1F5E1 ; Emoji # 7.0 [1] (🗡ï¸) dagger +1F5E3 ; Emoji # 7.0 [1] (🗣ï¸) speaking head +1F5E8 ; Emoji # 7.0 [1] (🗨ï¸) left speech bubble +1F5EF ; Emoji # 7.0 [1] (🗯ï¸) right anger bubble +1F5F3 ; Emoji # 7.0 [1] (🗳ï¸) ballot box with ballot +1F5FA ; Emoji # 7.0 [1] (🗺ï¸) world map +1F5FB..1F5FF ; Emoji # 6.0 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji # 6.1 [1] (😀) grinning face +1F601..1F610 ; Emoji # 6.0 [16] (ðŸ˜..ðŸ˜) beaming face with smiling eyes..neutral face +1F611 ; Emoji # 6.1 [1] (😑) expressionless face +1F612..1F614 ; Emoji # 6.0 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji # 6.1 [1] (😕) confused face +1F616 ; Emoji # 6.0 [1] (😖) confounded face +1F617 ; Emoji # 6.1 [1] (😗) kissing face +1F618 ; Emoji # 6.0 [1] (😘) face blowing a kiss +1F619 ; Emoji # 6.1 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji # 6.0 [1] (😚) kissing face with closed eyes +1F61B ; Emoji # 6.1 [1] (😛) face with tongue +1F61C..1F61E ; Emoji # 6.0 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji # 6.1 [1] (😟) worried face +1F620..1F625 ; Emoji # 6.0 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji # 6.0 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji # 6.1 [1] (😬) grimacing face +1F62D ; Emoji # 6.0 [1] (ðŸ˜) loudly crying face +1F62E..1F62F ; Emoji # 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji # 6.0 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji # 6.1 [1] (😴) sleeping face +1F635..1F640 ; Emoji # 6.0 [12] (😵..🙀) dizzy face..weary cat +1F641..1F642 ; Emoji # 7.0 [2] (ðŸ™..🙂) slightly frowning face..slightly smiling face +1F643..1F644 ; Emoji # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F ; Emoji # 6.0 [11] (🙅..ðŸ™) person gesturing NO..folded hands +1F680..1F6C5 ; Emoji # 6.0 [70] (🚀..🛅) rocket..left luggage +1F6CB..1F6CF ; Emoji # 7.0 [5] (🛋ï¸..ðŸ›ï¸) couch and lamp..bed +1F6D0 ; Emoji # 8.0 [1] (ðŸ›) place of worship +1F6D1..1F6D2 ; Emoji # 9.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D5 ; Emoji # 12.0 [1] (🛕) hindu temple +1F6E0..1F6E5 ; Emoji # 7.0 [6] (🛠ï¸..🛥ï¸) hammer and wrench..motor boat +1F6E9 ; Emoji # 7.0 [1] (🛩ï¸) small airplane +1F6EB..1F6EC ; Emoji # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F0 ; Emoji # 7.0 [1] (🛰ï¸) satellite +1F6F3 ; Emoji # 7.0 [1] (🛳ï¸) passenger ship +1F6F4..1F6F6 ; Emoji # 9.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji # 10.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji # 11.0 [1] (🛹) skateboard +1F6FA ; Emoji # 12.0 [1] (🛺) auto rickshaw +1F7E0..1F7EB ; Emoji # 12.0 [12] (🟠..🟫) orange circle..brown square +1F90D..1F90F ; Emoji # 12.0 [3] (ðŸ¤..ðŸ¤) white heart..pinching hand +1F910..1F918 ; Emoji # 8.0 [9] (ðŸ¤..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji # 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji # 10.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji # 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji # 9.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji # 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Emoji # 12.0 [1] (🤿) diving mask +1F940..1F945 ; Emoji # 9.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji # 10.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji # 11.0 [3] (ðŸ¥..ðŸ¥) lacrosse..flying disc +1F950..1F95E ; Emoji # 9.0 [15] (ðŸ¥..🥞) croissant..pancakes +1F95F..1F96B ; Emoji # 10.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji # 11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Emoji # 12.0 [1] (🥱) yawning face +1F973..1F976 ; Emoji # 11.0 [4] (🥳..🥶) partying face..cold face +1F97A ; Emoji # 11.0 [1] (🥺) pleading face +1F97B ; Emoji # 12.0 [1] (🥻) sari +1F97C..1F97F ; Emoji # 11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Emoji # 8.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Emoji # 9.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji # 10.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji # 11.0 [11] (🦘..🦢) kangaroo..swan +1F9A5..1F9AA ; Emoji # 12.0 [6] (🦥..🦪) sloth..oyster +1F9AE..1F9AF ; Emoji # 12.0 [2] (🦮..🦯) guide dog..probing cane +1F9B0..1F9B9 ; Emoji # 11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Emoji # 12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Emoji # 8.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji # 11.0 [2] (ðŸ§..🧂) cupcake..salt +1F9C3..1F9CA ; Emoji # 12.0 [8] (🧃..🧊) beverage box..ice cube +1F9CD..1F9CF ; Emoji # 12.0 [3] (ðŸ§..ðŸ§) person standing..deaf person +1F9D0..1F9E6 ; Emoji # 10.0 [23] (ðŸ§..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji # 11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA70..1FA73 ; Emoji # 12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA78..1FA7A ; Emoji # 12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA80..1FA82 ; Emoji # 12.0 [3] (🪀..🪂) yo-yo..parachute +1FA90..1FA95 ; Emoji # 12.0 [6] (ðŸª..🪕) ringed planet..banjo + +# Total elements: 1311 + +# ================================================ + +# All omitted code points have Emoji_Presentation=No +# @missing: 0000..10FFFF ; Emoji_Presentation ; No + +231A..231B ; Emoji_Presentation # 1.1 [2] (⌚..⌛) watch..hourglass done +23E9..23EC ; Emoji_Presentation # 6.0 [4] (â©..â¬) fast-forward button..fast down button +23F0 ; Emoji_Presentation # 6.0 [1] (â°) alarm clock +23F3 ; Emoji_Presentation # 6.0 [1] (â³) hourglass not done +25FD..25FE ; Emoji_Presentation # 3.2 [2] (â—½..â—¾) white medium-small square..black medium-small square +2614..2615 ; Emoji_Presentation # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2648..2653 ; Emoji_Presentation # 1.1 [12] (♈..♓) Aries..Pisces +267F ; Emoji_Presentation # 4.1 [1] (♿) wheelchair symbol +2693 ; Emoji_Presentation # 4.1 [1] (âš“) anchor +26A1 ; Emoji_Presentation # 4.0 [1] (âš¡) high voltage +26AA..26AB ; Emoji_Presentation # 4.1 [2] (⚪..âš«) white circle..black circle +26BD..26BE ; Emoji_Presentation # 5.2 [2] (âš½..âš¾) soccer ball..baseball +26C4..26C5 ; Emoji_Presentation # 5.2 [2] (⛄..â›…) snowman without snow..sun behind cloud +26CE ; Emoji_Presentation # 6.0 [1] (⛎) Ophiuchus +26D4 ; Emoji_Presentation # 5.2 [1] (â›”) no entry +26EA ; Emoji_Presentation # 5.2 [1] (⛪) church +26F2..26F3 ; Emoji_Presentation # 5.2 [2] (⛲..⛳) fountain..flag in hole +26F5 ; Emoji_Presentation # 5.2 [1] (⛵) sailboat +26FA ; Emoji_Presentation # 5.2 [1] (⛺) tent +26FD ; Emoji_Presentation # 5.2 [1] (⛽) fuel pump +2705 ; Emoji_Presentation # 6.0 [1] (✅) check mark button +270A..270B ; Emoji_Presentation # 6.0 [2] (✊..✋) raised fist..raised hand +2728 ; Emoji_Presentation # 6.0 [1] (✨) sparkles +274C ; Emoji_Presentation # 6.0 [1] (âŒ) cross mark +274E ; Emoji_Presentation # 6.0 [1] (âŽ) cross mark button +2753..2755 ; Emoji_Presentation # 6.0 [3] (â“..â•) question mark..white exclamation mark +2757 ; Emoji_Presentation # 5.2 [1] (â—) exclamation mark +2795..2797 ; Emoji_Presentation # 6.0 [3] (âž•..âž—) plus sign..division sign +27B0 ; Emoji_Presentation # 6.0 [1] (âž°) curly loop +27BF ; Emoji_Presentation # 6.0 [1] (âž¿) double curly loop +2B1B..2B1C ; Emoji_Presentation # 5.1 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji_Presentation # 5.1 [1] (â) star +2B55 ; Emoji_Presentation # 5.2 [1] (â•) hollow red circle +1F004 ; Emoji_Presentation # 5.1 [1] (🀄) mahjong red dragon +1F0CF ; Emoji_Presentation # 6.0 [1] (ðŸƒ) joker +1F18E ; Emoji_Presentation # 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji_Presentation # 6.0 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji_Presentation # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201 ; Emoji_Presentation # 6.0 [1] (ðŸˆ) Japanese “here†button +1F21A ; Emoji_Presentation # 5.2 [1] (🈚) Japanese “free of charge†button +1F22F ; Emoji_Presentation # 5.2 [1] (🈯) Japanese “reserved†button +1F232..1F236 ; Emoji_Presentation # 6.0 [5] (🈲..🈶) Japanese “prohibited†button..Japanese “not free of charge†button +1F238..1F23A ; Emoji_Presentation # 6.0 [3] (🈸..🈺) Japanese “application†button..Japanese “open for business†button +1F250..1F251 ; Emoji_Presentation # 6.0 [2] (ðŸ‰..🉑) Japanese “bargain†button..Japanese “acceptable†button +1F300..1F320 ; Emoji_Presentation # 6.0 [33] (🌀..🌠) cyclone..shooting star +1F32D..1F32F ; Emoji_Presentation # 8.0 [3] (ðŸŒ..🌯) hot dog..burrito +1F330..1F335 ; Emoji_Presentation # 6.0 [6] (🌰..🌵) chestnut..cactus +1F337..1F37C ; Emoji_Presentation # 6.0 [70] (🌷..ðŸ¼) tulip..baby bottle +1F37E..1F37F ; Emoji_Presentation # 8.0 [2] (ðŸ¾..ðŸ¿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji_Presentation # 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F3A0..1F3C4 ; Emoji_Presentation # 6.0 [37] (🎠..ðŸ„) carousel horse..person surfing +1F3C5 ; Emoji_Presentation # 7.0 [1] (ðŸ…) sports medal +1F3C6..1F3CA ; Emoji_Presentation # 6.0 [5] (ðŸ†..ðŸŠ) trophy..person swimming +1F3CF..1F3D3 ; Emoji_Presentation # 8.0 [5] (ðŸ..ðŸ“) cricket game..ping pong +1F3E0..1F3F0 ; Emoji_Presentation # 6.0 [17] (ðŸ ..ðŸ°) house..castle +1F3F4 ; Emoji_Presentation # 7.0 [1] (ðŸ´) black flag +1F3F8..1F3FF ; Emoji_Presentation # 8.0 [8] (ðŸ¸..ðŸ¿) badminton..dark skin tone +1F400..1F43E ; Emoji_Presentation # 6.0 [63] (ðŸ€..ðŸ¾) rat..paw prints +1F440 ; Emoji_Presentation # 6.0 [1] (👀) eyes +1F442..1F4F7 ; Emoji_Presentation # 6.0[182] (👂..📷) ear..camera +1F4F8 ; Emoji_Presentation # 7.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji_Presentation # 6.0 [4] (📹..📼) video camera..videocassette +1F4FF ; Emoji_Presentation # 8.0 [1] (📿) prayer beads +1F500..1F53D ; Emoji_Presentation # 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button +1F54B..1F54E ; Emoji_Presentation # 8.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F567 ; Emoji_Presentation # 6.0 [24] (ðŸ•..🕧) one o’clock..twelve-thirty +1F57A ; Emoji_Presentation # 9.0 [1] (🕺) man dancing +1F595..1F596 ; Emoji_Presentation # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji_Presentation # 9.0 [1] (🖤) black heart +1F5FB..1F5FF ; Emoji_Presentation # 6.0 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji_Presentation # 6.1 [1] (😀) grinning face +1F601..1F610 ; Emoji_Presentation # 6.0 [16] (ðŸ˜..ðŸ˜) beaming face with smiling eyes..neutral face +1F611 ; Emoji_Presentation # 6.1 [1] (😑) expressionless face +1F612..1F614 ; Emoji_Presentation # 6.0 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji_Presentation # 6.1 [1] (😕) confused face +1F616 ; Emoji_Presentation # 6.0 [1] (😖) confounded face +1F617 ; Emoji_Presentation # 6.1 [1] (😗) kissing face +1F618 ; Emoji_Presentation # 6.0 [1] (😘) face blowing a kiss +1F619 ; Emoji_Presentation # 6.1 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji_Presentation # 6.0 [1] (😚) kissing face with closed eyes +1F61B ; Emoji_Presentation # 6.1 [1] (😛) face with tongue +1F61C..1F61E ; Emoji_Presentation # 6.0 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji_Presentation # 6.1 [1] (😟) worried face +1F620..1F625 ; Emoji_Presentation # 6.0 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji_Presentation # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji_Presentation # 6.0 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji_Presentation # 6.1 [1] (😬) grimacing face +1F62D ; Emoji_Presentation # 6.0 [1] (ðŸ˜) loudly crying face +1F62E..1F62F ; Emoji_Presentation # 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji_Presentation # 6.0 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji_Presentation # 6.1 [1] (😴) sleeping face +1F635..1F640 ; Emoji_Presentation # 6.0 [12] (😵..🙀) dizzy face..weary cat +1F641..1F642 ; Emoji_Presentation # 7.0 [2] (ðŸ™..🙂) slightly frowning face..slightly smiling face +1F643..1F644 ; Emoji_Presentation # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F ; Emoji_Presentation # 6.0 [11] (🙅..ðŸ™) person gesturing NO..folded hands +1F680..1F6C5 ; Emoji_Presentation # 6.0 [70] (🚀..🛅) rocket..left luggage +1F6CC ; Emoji_Presentation # 7.0 [1] (🛌) person in bed +1F6D0 ; Emoji_Presentation # 8.0 [1] (ðŸ›) place of worship +1F6D1..1F6D2 ; Emoji_Presentation # 9.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D5 ; Emoji_Presentation # 12.0 [1] (🛕) hindu temple +1F6EB..1F6EC ; Emoji_Presentation # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F4..1F6F6 ; Emoji_Presentation # 9.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji_Presentation # 10.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji_Presentation # 11.0 [1] (🛹) skateboard +1F6FA ; Emoji_Presentation # 12.0 [1] (🛺) auto rickshaw +1F7E0..1F7EB ; Emoji_Presentation # 12.0 [12] (🟠..🟫) orange circle..brown square +1F90D..1F90F ; Emoji_Presentation # 12.0 [3] (ðŸ¤..ðŸ¤) white heart..pinching hand +1F910..1F918 ; Emoji_Presentation # 8.0 [9] (ðŸ¤..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji_Presentation # 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Presentation # 10.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji_Presentation # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji_Presentation # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji_Presentation # 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Presentation # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji_Presentation # 9.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji_Presentation # 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Emoji_Presentation # 12.0 [1] (🤿) diving mask +1F940..1F945 ; Emoji_Presentation # 9.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji_Presentation # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji_Presentation # 10.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji_Presentation # 11.0 [3] (ðŸ¥..ðŸ¥) lacrosse..flying disc +1F950..1F95E ; Emoji_Presentation # 9.0 [15] (ðŸ¥..🥞) croissant..pancakes +1F95F..1F96B ; Emoji_Presentation # 10.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji_Presentation # 11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Emoji_Presentation # 12.0 [1] (🥱) yawning face +1F973..1F976 ; Emoji_Presentation # 11.0 [4] (🥳..🥶) partying face..cold face +1F97A ; Emoji_Presentation # 11.0 [1] (🥺) pleading face +1F97B ; Emoji_Presentation # 12.0 [1] (🥻) sari +1F97C..1F97F ; Emoji_Presentation # 11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Emoji_Presentation # 8.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Emoji_Presentation # 9.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji_Presentation # 10.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji_Presentation # 11.0 [11] (🦘..🦢) kangaroo..swan +1F9A5..1F9AA ; Emoji_Presentation # 12.0 [6] (🦥..🦪) sloth..oyster +1F9AE..1F9AF ; Emoji_Presentation # 12.0 [2] (🦮..🦯) guide dog..probing cane +1F9B0..1F9B9 ; Emoji_Presentation # 11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Emoji_Presentation # 12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Emoji_Presentation # 8.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji_Presentation # 11.0 [2] (ðŸ§..🧂) cupcake..salt +1F9C3..1F9CA ; Emoji_Presentation # 12.0 [8] (🧃..🧊) beverage box..ice cube +1F9CD..1F9CF ; Emoji_Presentation # 12.0 [3] (ðŸ§..ðŸ§) person standing..deaf person +1F9D0..1F9E6 ; Emoji_Presentation # 10.0 [23] (ðŸ§..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji_Presentation # 11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA70..1FA73 ; Emoji_Presentation # 12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA78..1FA7A ; Emoji_Presentation # 12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA80..1FA82 ; Emoji_Presentation # 12.0 [3] (🪀..🪂) yo-yo..parachute +1FA90..1FA95 ; Emoji_Presentation # 12.0 [6] (ðŸª..🪕) ringed planet..banjo + +# Total elements: 1093 + +# ================================================ + +# All omitted code points have Emoji_Modifier=No +# @missing: 0000..10FFFF ; Emoji_Modifier ; No + +1F3FB..1F3FF ; Emoji_Modifier # 8.0 [5] (ðŸ»..ðŸ¿) light skin tone..dark skin tone + +# Total elements: 5 + +# ================================================ + +# All omitted code points have Emoji_Modifier_Base=No +# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No + +261D ; Emoji_Modifier_Base # 1.1 [1] (â˜ï¸) index pointing up +26F9 ; Emoji_Modifier_Base # 5.2 [1] (⛹ï¸) person bouncing ball +270A..270B ; Emoji_Modifier_Base # 6.0 [2] (✊..✋) raised fist..raised hand +270C..270D ; Emoji_Modifier_Base # 1.1 [2] (✌ï¸..âœï¸) victory hand..writing hand +1F385 ; Emoji_Modifier_Base # 6.0 [1] (🎅) Santa Claus +1F3C2..1F3C4 ; Emoji_Modifier_Base # 6.0 [3] (ðŸ‚..ðŸ„) snowboarder..person surfing +1F3C7 ; Emoji_Modifier_Base # 6.0 [1] (ðŸ‡) horse racing +1F3CA ; Emoji_Modifier_Base # 6.0 [1] (ðŸŠ) person swimming +1F3CB..1F3CC ; Emoji_Modifier_Base # 7.0 [2] (ðŸ‹ï¸..ðŸŒï¸) person lifting weights..person golfing +1F442..1F443 ; Emoji_Modifier_Base # 6.0 [2] (👂..👃) ear..nose +1F446..1F450 ; Emoji_Modifier_Base # 6.0 [11] (👆..ðŸ‘) backhand index pointing up..open hands +1F466..1F478 ; Emoji_Modifier_Base # 6.0 [19] (👦..👸) boy..princess +1F47C ; Emoji_Modifier_Base # 6.0 [1] (👼) baby angel +1F481..1F483 ; Emoji_Modifier_Base # 6.0 [3] (ðŸ’..💃) person tipping hand..woman dancing +1F485..1F487 ; Emoji_Modifier_Base # 6.0 [3] (💅..💇) nail polish..person getting haircut +1F48F ; Emoji_Modifier_Base # 6.0 [1] (ðŸ’) kiss +1F491 ; Emoji_Modifier_Base # 6.0 [1] (💑) couple with heart +1F4AA ; Emoji_Modifier_Base # 6.0 [1] (💪) flexed biceps +1F574..1F575 ; Emoji_Modifier_Base # 7.0 [2] (🕴ï¸..🕵ï¸) man in suit levitating..detective +1F57A ; Emoji_Modifier_Base # 9.0 [1] (🕺) man dancing +1F590 ; Emoji_Modifier_Base # 7.0 [1] (ðŸ–ï¸) hand with fingers splayed +1F595..1F596 ; Emoji_Modifier_Base # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +1F645..1F647 ; Emoji_Modifier_Base # 6.0 [3] (🙅..🙇) person gesturing NO..person bowing +1F64B..1F64F ; Emoji_Modifier_Base # 6.0 [5] (🙋..ðŸ™) person raising hand..folded hands +1F6A3 ; Emoji_Modifier_Base # 6.0 [1] (🚣) person rowing boat +1F6B4..1F6B6 ; Emoji_Modifier_Base # 6.0 [3] (🚴..🚶) person biking..person walking +1F6C0 ; Emoji_Modifier_Base # 6.0 [1] (🛀) person taking bath +1F6CC ; Emoji_Modifier_Base # 7.0 [1] (🛌) person in bed +1F90F ; Emoji_Modifier_Base # 12.0 [1] (ðŸ¤) pinching hand +1F918 ; Emoji_Modifier_Base # 8.0 [1] (🤘) sign of the horns +1F919..1F91E ; Emoji_Modifier_Base # 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Modifier_Base # 10.0 [1] (🤟) love-you gesture +1F926 ; Emoji_Modifier_Base # 9.0 [1] (🤦) person facepalming +1F930 ; Emoji_Modifier_Base # 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Modifier_Base # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F939 ; Emoji_Modifier_Base # 9.0 [7] (🤳..🤹) selfie..person juggling +1F93C..1F93E ; Emoji_Modifier_Base # 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F9B5..1F9B6 ; Emoji_Modifier_Base # 11.0 [2] (🦵..🦶) leg..foot +1F9B8..1F9B9 ; Emoji_Modifier_Base # 11.0 [2] (🦸..🦹) superhero..supervillain +1F9BB ; Emoji_Modifier_Base # 12.0 [1] (🦻) ear with hearing aid +1F9CD..1F9CF ; Emoji_Modifier_Base # 12.0 [3] (ðŸ§..ðŸ§) person standing..deaf person +1F9D1..1F9DD ; Emoji_Modifier_Base # 10.0 [13] (🧑..ðŸ§) person..elf + +# Total elements: 120 + +# ================================================ + +# All omitted code points have Emoji_Component=No +# @missing: 0000..10FFFF ; Emoji_Component ; No + +0023 ; Emoji_Component # 1.1 [1] (#ï¸) number sign +002A ; Emoji_Component # 1.1 [1] (*ï¸) asterisk +0030..0039 ; Emoji_Component # 1.1 [10] (0ï¸..9ï¸) digit zero..digit nine +200D ; Emoji_Component # 1.1 [1] (â€) zero width joiner +20E3 ; Emoji_Component # 3.0 [1] (⃣) combining enclosing keycap +FE0F ; Emoji_Component # 3.2 [1] () VARIATION SELECTOR-16 +1F1E6..1F1FF ; Emoji_Component # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F3FB..1F3FF ; Emoji_Component # 8.0 [5] (ðŸ»..ðŸ¿) light skin tone..dark skin tone +1F9B0..1F9B3 ; Emoji_Component # 11.0 [4] (🦰..🦳) red hair..white hair +E0020..E007F ; Emoji_Component # 3.1 [96] (ó € ..ó ¿) tag space..cancel tag + +# Total elements: 146 + +# ================================================ + +# All omitted code points have Extended_Pictographic=No +# @missing: 0000..10FFFF ; Extended_Pictographic ; No + +00A9 ; Extended_Pictographic# 1.1 [1] (©ï¸) copyright +00AE ; Extended_Pictographic# 1.1 [1] (®ï¸) registered +203C ; Extended_Pictographic# 1.1 [1] (‼ï¸) double exclamation mark +2049 ; Extended_Pictographic# 3.0 [1] (â‰ï¸) exclamation question mark +2122 ; Extended_Pictographic# 1.1 [1] (â„¢ï¸) trade mark +2139 ; Extended_Pictographic# 3.0 [1] (ℹï¸) information +2194..2199 ; Extended_Pictographic# 1.1 [6] (↔ï¸..↙ï¸) left-right arrow..down-left arrow +21A9..21AA ; Extended_Pictographic# 1.1 [2] (↩ï¸..↪ï¸) right arrow curving left..left arrow curving right +231A..231B ; Extended_Pictographic# 1.1 [2] (⌚..⌛) watch..hourglass done +2328 ; Extended_Pictographic# 1.1 [1] (⌨ï¸) keyboard +2388 ; Extended_Pictographic# 3.0 [1] (⎈) HELM SYMBOL +23CF ; Extended_Pictographic# 4.0 [1] (âï¸) eject button +23E9..23F3 ; Extended_Pictographic# 6.0 [11] (â©..â³) fast-forward button..hourglass not done +23F8..23FA ; Extended_Pictographic# 7.0 [3] (â¸ï¸..âºï¸) pause button..record button +24C2 ; Extended_Pictographic# 1.1 [1] (â“‚ï¸) circled M +25AA..25AB ; Extended_Pictographic# 1.1 [2] (â–ªï¸..â–«ï¸) black small square..white small square +25B6 ; Extended_Pictographic# 1.1 [1] (â–¶ï¸) play button +25C0 ; Extended_Pictographic# 1.1 [1] (â—€ï¸) reverse button +25FB..25FE ; Extended_Pictographic# 3.2 [4] (â—»ï¸..â—¾) white medium square..black medium-small square +2600..2605 ; Extended_Pictographic# 1.1 [6] (☀ï¸..★) sun..BLACK STAR +2607..2612 ; Extended_Pictographic# 1.1 [12] (☇..☒) LIGHTNING..BALLOT BOX WITH X +2614..2615 ; Extended_Pictographic# 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2616..2617 ; Extended_Pictographic# 3.2 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE +2618 ; Extended_Pictographic# 4.1 [1] (☘ï¸) shamrock +2619 ; Extended_Pictographic# 3.0 [1] (☙) REVERSED ROTATED FLORAL HEART BULLET +261A..266F ; Extended_Pictographic# 1.1 [86] (☚..♯) BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN +2670..2671 ; Extended_Pictographic# 3.0 [2] (â™°..â™±) WEST SYRIAC CROSS..EAST SYRIAC CROSS +2672..267D ; Extended_Pictographic# 3.2 [12] (♲..♽) UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL +267E..267F ; Extended_Pictographic# 4.1 [2] (♾ï¸..♿) infinity..wheelchair symbol +2680..2685 ; Extended_Pictographic# 3.2 [6] (⚀..âš…) DIE FACE-1..DIE FACE-6 +2690..2691 ; Extended_Pictographic# 4.0 [2] (âš..âš‘) WHITE FLAG..BLACK FLAG +2692..269C ; Extended_Pictographic# 4.1 [11] (âš’ï¸..âšœï¸) hammer and pick..fleur-de-lis +269D ; Extended_Pictographic# 5.1 [1] (âš) OUTLINED WHITE STAR +269E..269F ; Extended_Pictographic# 5.2 [2] (âšž..⚟) THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT +26A0..26A1 ; Extended_Pictographic# 4.0 [2] (âš ï¸..âš¡) warning..high voltage +26A2..26B1 ; Extended_Pictographic# 4.1 [16] (⚢..âš±ï¸) DOUBLED FEMALE SIGN..funeral urn +26B2 ; Extended_Pictographic# 5.0 [1] (âš²) NEUTER +26B3..26BC ; Extended_Pictographic# 5.1 [10] (âš³..âš¼) CERES..SESQUIQUADRATE +26BD..26BF ; Extended_Pictographic# 5.2 [3] (âš½..âš¿) soccer ball..SQUARED KEY +26C0..26C3 ; Extended_Pictographic# 5.1 [4] (⛀..⛃) WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING +26C4..26CD ; Extended_Pictographic# 5.2 [10] (⛄..â›) snowman without snow..DISABLED CAR +26CE ; Extended_Pictographic# 6.0 [1] (⛎) Ophiuchus +26CF..26E1 ; Extended_Pictographic# 5.2 [19] (â›ï¸..⛡) pick..RESTRICTED LEFT ENTRY-2 +26E2 ; Extended_Pictographic# 6.0 [1] (⛢) ASTRONOMICAL SYMBOL FOR URANUS +26E3 ; Extended_Pictographic# 5.2 [1] (⛣) HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE +26E4..26E7 ; Extended_Pictographic# 6.0 [4] (⛤..â›§) PENTAGRAM..INVERTED PENTAGRAM +26E8..26FF ; Extended_Pictographic# 5.2 [24] (⛨..⛿) BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE +2700 ; Extended_Pictographic# 7.0 [1] (✀) BLACK SAFETY SCISSORS +2701..2704 ; Extended_Pictographic# 1.1 [4] (âœ..✄) UPPER BLADE SCISSORS..WHITE SCISSORS +2705 ; Extended_Pictographic# 6.0 [1] (✅) check mark button +2708..2709 ; Extended_Pictographic# 1.1 [2] (✈ï¸..✉ï¸) airplane..envelope +270A..270B ; Extended_Pictographic# 6.0 [2] (✊..✋) raised fist..raised hand +270C..2712 ; Extended_Pictographic# 1.1 [7] (✌ï¸..✒ï¸) victory hand..black nib +2714 ; Extended_Pictographic# 1.1 [1] (✔ï¸) check mark +2716 ; Extended_Pictographic# 1.1 [1] (✖ï¸) multiplication sign +271D ; Extended_Pictographic# 1.1 [1] (âœï¸) latin cross +2721 ; Extended_Pictographic# 1.1 [1] (✡ï¸) star of David +2728 ; Extended_Pictographic# 6.0 [1] (✨) sparkles +2733..2734 ; Extended_Pictographic# 1.1 [2] (✳ï¸..✴ï¸) eight-spoked asterisk..eight-pointed star +2744 ; Extended_Pictographic# 1.1 [1] (â„ï¸) snowflake +2747 ; Extended_Pictographic# 1.1 [1] (â‡ï¸) sparkle +274C ; Extended_Pictographic# 6.0 [1] (âŒ) cross mark +274E ; Extended_Pictographic# 6.0 [1] (âŽ) cross mark button +2753..2755 ; Extended_Pictographic# 6.0 [3] (â“..â•) question mark..white exclamation mark +2757 ; Extended_Pictographic# 5.2 [1] (â—) exclamation mark +2763..2767 ; Extended_Pictographic# 1.1 [5] (â£ï¸..â§) heart exclamation..ROTATED FLORAL HEART BULLET +2795..2797 ; Extended_Pictographic# 6.0 [3] (âž•..âž—) plus sign..division sign +27A1 ; Extended_Pictographic# 1.1 [1] (âž¡ï¸) right arrow +27B0 ; Extended_Pictographic# 6.0 [1] (âž°) curly loop +27BF ; Extended_Pictographic# 6.0 [1] (âž¿) double curly loop +2934..2935 ; Extended_Pictographic# 3.2 [2] (⤴ï¸..⤵ï¸) right arrow curving up..right arrow curving down +2B05..2B07 ; Extended_Pictographic# 4.0 [3] (⬅ï¸..⬇ï¸) left arrow..down arrow +2B1B..2B1C ; Extended_Pictographic# 5.1 [2] (⬛..⬜) black large square..white large square +2B50 ; Extended_Pictographic# 5.1 [1] (â) star +2B55 ; Extended_Pictographic# 5.2 [1] (â•) hollow red circle +3030 ; Extended_Pictographic# 1.1 [1] (〰ï¸) wavy dash +303D ; Extended_Pictographic# 3.2 [1] (〽ï¸) part alternation mark +3297 ; Extended_Pictographic# 1.1 [1] (㊗ï¸) Japanese “congratulations†button +3299 ; Extended_Pictographic# 1.1 [1] (㊙ï¸) Japanese “secret†button +1F000..1F02B ; Extended_Pictographic# 5.1 [44] (🀀..🀫) MAHJONG TILE EAST WIND..MAHJONG TILE BACK +1F02C..1F02F ; Extended_Pictographic# NA [4] (🀬..🀯) <reserved-1F02C>..<reserved-1F02F> +1F030..1F093 ; Extended_Pictographic# 5.1[100] (🀰..🂓) DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 +1F094..1F09F ; Extended_Pictographic# NA [12] (🂔..🂟) <reserved-1F094>..<reserved-1F09F> +1F0A0..1F0AE ; Extended_Pictographic# 6.0 [15] (🂠..🂮) PLAYING CARD BACK..PLAYING CARD KING OF SPADES +1F0AF..1F0B0 ; Extended_Pictographic# NA [2] (🂯..🂰) <reserved-1F0AF>..<reserved-1F0B0> +1F0B1..1F0BE ; Extended_Pictographic# 6.0 [14] (🂱..🂾) PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS +1F0BF ; Extended_Pictographic# 7.0 [1] (🂿) PLAYING CARD RED JOKER +1F0C0 ; Extended_Pictographic# NA [1] (🃀) <reserved-1F0C0> +1F0C1..1F0CF ; Extended_Pictographic# 6.0 [15] (ðŸƒ..ðŸƒ) PLAYING CARD ACE OF DIAMONDS..joker +1F0D0 ; Extended_Pictographic# NA [1] (ðŸƒ) <reserved-1F0D0> +1F0D1..1F0DF ; Extended_Pictographic# 6.0 [15] (🃑..🃟) PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER +1F0E0..1F0F5 ; Extended_Pictographic# 7.0 [22] (🃠..🃵) PLAYING CARD FOOL..PLAYING CARD TRUMP-21 +1F0F6..1F0FF ; Extended_Pictographic# NA [10] (🃶..🃿) <reserved-1F0F6>..<reserved-1F0FF> +1F10D..1F10F ; Extended_Pictographic# NA [3] (ðŸ„..ðŸ„) <reserved-1F10D>..<reserved-1F10F> +1F12F ; Extended_Pictographic# 11.0 [1] (🄯) COPYLEFT SYMBOL +1F16C ; Extended_Pictographic# 12.0 [1] (🅬) RAISED MR SIGN +1F16D..1F16F ; Extended_Pictographic# NA [3] (ðŸ…..🅯) <reserved-1F16D>..<reserved-1F16F> +1F170..1F171 ; Extended_Pictographic# 6.0 [2] (🅰ï¸..🅱ï¸) A button (blood type)..B button (blood type) +1F17E ; Extended_Pictographic# 6.0 [1] (🅾ï¸) O button (blood type) +1F17F ; Extended_Pictographic# 5.2 [1] (🅿ï¸) P button +1F18E ; Extended_Pictographic# 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A ; Extended_Pictographic# 6.0 [10] (🆑..🆚) CL button..VS button +1F1AD..1F1E5 ; Extended_Pictographic# NA [57] (ðŸ†..🇥) <reserved-1F1AD>..<reserved-1F1E5> +1F201..1F202 ; Extended_Pictographic# 6.0 [2] (ðŸˆ..🈂ï¸) Japanese “here†button..Japanese “service charge†button +1F203..1F20F ; Extended_Pictographic# NA [13] (🈃..ðŸˆ) <reserved-1F203>..<reserved-1F20F> +1F21A ; Extended_Pictographic# 5.2 [1] (🈚) Japanese “free of charge†button +1F22F ; Extended_Pictographic# 5.2 [1] (🈯) Japanese “reserved†button +1F232..1F23A ; Extended_Pictographic# 6.0 [9] (🈲..🈺) Japanese “prohibited†button..Japanese “open for business†button +1F23C..1F23F ; Extended_Pictographic# NA [4] (🈼..🈿) <reserved-1F23C>..<reserved-1F23F> +1F249..1F24F ; Extended_Pictographic# NA [7] (🉉..ðŸ‰) <reserved-1F249>..<reserved-1F24F> +1F250..1F251 ; Extended_Pictographic# 6.0 [2] (ðŸ‰..🉑) Japanese “bargain†button..Japanese “acceptable†button +1F252..1F25F ; Extended_Pictographic# NA [14] (🉒..🉟) <reserved-1F252>..<reserved-1F25F> +1F260..1F265 ; Extended_Pictographic# 10.0 [6] (🉠..🉥) ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI +1F266..1F2FF ; Extended_Pictographic# NA[154] (🉦..🋿) <reserved-1F266>..<reserved-1F2FF> +1F300..1F320 ; Extended_Pictographic# 6.0 [33] (🌀..🌠) cyclone..shooting star +1F321..1F32C ; Extended_Pictographic# 7.0 [12] (🌡ï¸..🌬ï¸) thermometer..wind face +1F32D..1F32F ; Extended_Pictographic# 8.0 [3] (ðŸŒ..🌯) hot dog..burrito +1F330..1F335 ; Extended_Pictographic# 6.0 [6] (🌰..🌵) chestnut..cactus +1F336 ; Extended_Pictographic# 7.0 [1] (🌶ï¸) hot pepper +1F337..1F37C ; Extended_Pictographic# 6.0 [70] (🌷..ðŸ¼) tulip..baby bottle +1F37D ; Extended_Pictographic# 7.0 [1] (ðŸ½ï¸) fork and knife with plate +1F37E..1F37F ; Extended_Pictographic# 8.0 [2] (ðŸ¾..ðŸ¿) bottle with popping cork..popcorn +1F380..1F393 ; Extended_Pictographic# 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F394..1F39F ; Extended_Pictographic# 7.0 [12] (🎔..🎟ï¸) HEART WITH TIP ON THE LEFT..admission tickets +1F3A0..1F3C4 ; Extended_Pictographic# 6.0 [37] (🎠..ðŸ„) carousel horse..person surfing +1F3C5 ; Extended_Pictographic# 7.0 [1] (ðŸ…) sports medal +1F3C6..1F3CA ; Extended_Pictographic# 6.0 [5] (ðŸ†..ðŸŠ) trophy..person swimming +1F3CB..1F3CE ; Extended_Pictographic# 7.0 [4] (ðŸ‹ï¸..ðŸŽï¸) person lifting weights..racing car +1F3CF..1F3D3 ; Extended_Pictographic# 8.0 [5] (ðŸ..ðŸ“) cricket game..ping pong +1F3D4..1F3DF ; Extended_Pictographic# 7.0 [12] (ðŸ”ï¸..ðŸŸï¸) snow-capped mountain..stadium +1F3E0..1F3F0 ; Extended_Pictographic# 6.0 [17] (ðŸ ..ðŸ°) house..castle +1F3F1..1F3F7 ; Extended_Pictographic# 7.0 [7] (ðŸ±..ðŸ·ï¸) WHITE PENNANT..label +1F3F8..1F3FA ; Extended_Pictographic# 8.0 [3] (ðŸ¸..ðŸº) badminton..amphora +1F400..1F43E ; Extended_Pictographic# 6.0 [63] (ðŸ€..ðŸ¾) rat..paw prints +1F43F ; Extended_Pictographic# 7.0 [1] (ðŸ¿ï¸) chipmunk +1F440 ; Extended_Pictographic# 6.0 [1] (👀) eyes +1F441 ; Extended_Pictographic# 7.0 [1] (ðŸ‘ï¸) eye +1F442..1F4F7 ; Extended_Pictographic# 6.0[182] (👂..📷) ear..camera +1F4F8 ; Extended_Pictographic# 7.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Extended_Pictographic# 6.0 [4] (📹..📼) video camera..videocassette +1F4FD..1F4FE ; Extended_Pictographic# 7.0 [2] (📽ï¸..📾) film projector..PORTABLE STEREO +1F4FF ; Extended_Pictographic# 8.0 [1] (📿) prayer beads +1F500..1F53D ; Extended_Pictographic# 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button +1F546..1F54A ; Extended_Pictographic# 7.0 [5] (🕆..🕊ï¸) WHITE LATIN CROSS..dove +1F54B..1F54F ; Extended_Pictographic# 8.0 [5] (🕋..ðŸ•) kaaba..BOWL OF HYGIEIA +1F550..1F567 ; Extended_Pictographic# 6.0 [24] (ðŸ•..🕧) one o’clock..twelve-thirty +1F568..1F579 ; Extended_Pictographic# 7.0 [18] (🕨..🕹ï¸) RIGHT SPEAKER..joystick +1F57A ; Extended_Pictographic# 9.0 [1] (🕺) man dancing +1F57B..1F5A3 ; Extended_Pictographic# 7.0 [41] (🕻..🖣) LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX +1F5A4 ; Extended_Pictographic# 9.0 [1] (🖤) black heart +1F5A5..1F5FA ; Extended_Pictographic# 7.0 [86] (🖥ï¸..🗺ï¸) desktop computer..world map +1F5FB..1F5FF ; Extended_Pictographic# 6.0 [5] (🗻..🗿) mount fuji..moai +1F600 ; Extended_Pictographic# 6.1 [1] (😀) grinning face +1F601..1F610 ; Extended_Pictographic# 6.0 [16] (ðŸ˜..ðŸ˜) beaming face with smiling eyes..neutral face +1F611 ; Extended_Pictographic# 6.1 [1] (😑) expressionless face +1F612..1F614 ; Extended_Pictographic# 6.0 [3] (😒..😔) unamused face..pensive face +1F615 ; Extended_Pictographic# 6.1 [1] (😕) confused face +1F616 ; Extended_Pictographic# 6.0 [1] (😖) confounded face +1F617 ; Extended_Pictographic# 6.1 [1] (😗) kissing face +1F618 ; Extended_Pictographic# 6.0 [1] (😘) face blowing a kiss +1F619 ; Extended_Pictographic# 6.1 [1] (😙) kissing face with smiling eyes +1F61A ; Extended_Pictographic# 6.0 [1] (😚) kissing face with closed eyes +1F61B ; Extended_Pictographic# 6.1 [1] (😛) face with tongue +1F61C..1F61E ; Extended_Pictographic# 6.0 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Extended_Pictographic# 6.1 [1] (😟) worried face +1F620..1F625 ; Extended_Pictographic# 6.0 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Extended_Pictographic# 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Extended_Pictographic# 6.0 [4] (😨..😫) fearful face..tired face +1F62C ; Extended_Pictographic# 6.1 [1] (😬) grimacing face +1F62D ; Extended_Pictographic# 6.0 [1] (ðŸ˜) loudly crying face +1F62E..1F62F ; Extended_Pictographic# 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Extended_Pictographic# 6.0 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Extended_Pictographic# 6.1 [1] (😴) sleeping face +1F635..1F640 ; Extended_Pictographic# 6.0 [12] (😵..🙀) dizzy face..weary cat +1F641..1F642 ; Extended_Pictographic# 7.0 [2] (ðŸ™..🙂) slightly frowning face..slightly smiling face +1F643..1F644 ; Extended_Pictographic# 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F ; Extended_Pictographic# 6.0 [11] (🙅..ðŸ™) person gesturing NO..folded hands +1F680..1F6C5 ; Extended_Pictographic# 6.0 [70] (🚀..🛅) rocket..left luggage +1F6C6..1F6CF ; Extended_Pictographic# 7.0 [10] (🛆..ðŸ›ï¸) TRIANGLE WITH ROUNDED CORNERS..bed +1F6D0 ; Extended_Pictographic# 8.0 [1] (ðŸ›) place of worship +1F6D1..1F6D2 ; Extended_Pictographic# 9.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D3..1F6D4 ; Extended_Pictographic# 10.0 [2] (🛓..🛔) STUPA..PAGODA +1F6D5 ; Extended_Pictographic# 12.0 [1] (🛕) hindu temple +1F6D6..1F6DF ; Extended_Pictographic# NA [10] (🛖..🛟) <reserved-1F6D6>..<reserved-1F6DF> +1F6E0..1F6EC ; Extended_Pictographic# 7.0 [13] (🛠ï¸..🛬) hammer and wrench..airplane arrival +1F6ED..1F6EF ; Extended_Pictographic# NA [3] (ðŸ›..🛯) <reserved-1F6ED>..<reserved-1F6EF> +1F6F0..1F6F3 ; Extended_Pictographic# 7.0 [4] (🛰ï¸..🛳ï¸) satellite..passenger ship +1F6F4..1F6F6 ; Extended_Pictographic# 9.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Extended_Pictographic# 10.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Extended_Pictographic# 11.0 [1] (🛹) skateboard +1F6FA ; Extended_Pictographic# 12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FF ; Extended_Pictographic# NA [5] (🛻..🛿) <reserved-1F6FB>..<reserved-1F6FF> +1F774..1F77F ; Extended_Pictographic# NA [12] (ðŸ´..ðŸ¿) <reserved-1F774>..<reserved-1F77F> +1F7D5..1F7D8 ; Extended_Pictographic# 11.0 [4] (🟕..🟘) CIRCLED TRIANGLE..NEGATIVE CIRCLED SQUARE +1F7D9..1F7DF ; Extended_Pictographic# NA [7] (🟙..🟟) <reserved-1F7D9>..<reserved-1F7DF> +1F7E0..1F7EB ; Extended_Pictographic# 12.0 [12] (🟠..🟫) orange circle..brown square +1F7EC..1F7FF ; Extended_Pictographic# NA [20] (🟬..🟿) <reserved-1F7EC>..<reserved-1F7FF> +1F80C..1F80F ; Extended_Pictographic# NA [4] (🠌..ðŸ ) <reserved-1F80C>..<reserved-1F80F> +1F848..1F84F ; Extended_Pictographic# NA [8] (🡈..ðŸ¡) <reserved-1F848>..<reserved-1F84F> +1F85A..1F85F ; Extended_Pictographic# NA [6] (🡚..🡟) <reserved-1F85A>..<reserved-1F85F> +1F888..1F88F ; Extended_Pictographic# NA [8] (🢈..ðŸ¢) <reserved-1F888>..<reserved-1F88F> +1F8AE..1F8FF ; Extended_Pictographic# NA [82] (🢮..🣿) <reserved-1F8AE>..<reserved-1F8FF> +1F90C ; Extended_Pictographic# NA [1] (🤌) <reserved-1F90C> +1F90D..1F90F ; Extended_Pictographic# 12.0 [3] (ðŸ¤..ðŸ¤) white heart..pinching hand +1F910..1F918 ; Extended_Pictographic# 8.0 [9] (ðŸ¤..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Extended_Pictographic# 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Extended_Pictographic# 10.0 [1] (🤟) love-you gesture +1F920..1F927 ; Extended_Pictographic# 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Extended_Pictographic# 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Extended_Pictographic# 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Extended_Pictographic# 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Extended_Pictographic# 9.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Extended_Pictographic# 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Extended_Pictographic# 12.0 [1] (🤿) diving mask +1F940..1F945 ; Extended_Pictographic# 9.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Extended_Pictographic# 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Extended_Pictographic# 10.0 [1] (🥌) curling stone +1F94D..1F94F ; Extended_Pictographic# 11.0 [3] (ðŸ¥..ðŸ¥) lacrosse..flying disc +1F950..1F95E ; Extended_Pictographic# 9.0 [15] (ðŸ¥..🥞) croissant..pancakes +1F95F..1F96B ; Extended_Pictographic# 10.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Extended_Pictographic# 11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Extended_Pictographic# 12.0 [1] (🥱) yawning face +1F972 ; Extended_Pictographic# NA [1] (🥲) <reserved-1F972> +1F973..1F976 ; Extended_Pictographic# 11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F979 ; Extended_Pictographic# NA [3] (🥷..🥹) <reserved-1F977>..<reserved-1F979> +1F97A ; Extended_Pictographic# 11.0 [1] (🥺) pleading face +1F97B ; Extended_Pictographic# 12.0 [1] (🥻) sari +1F97C..1F97F ; Extended_Pictographic# 11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Extended_Pictographic# 8.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Extended_Pictographic# 9.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Extended_Pictographic# 10.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Extended_Pictographic# 11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Extended_Pictographic# NA [2] (🦣..🦤) <reserved-1F9A3>..<reserved-1F9A4> +1F9A5..1F9AA ; Extended_Pictographic# 12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Extended_Pictographic# NA [3] (🦫..ðŸ¦) <reserved-1F9AB>..<reserved-1F9AD> +1F9AE..1F9AF ; Extended_Pictographic# 12.0 [2] (🦮..🦯) guide dog..probing cane +1F9B0..1F9B9 ; Extended_Pictographic# 11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Extended_Pictographic# 12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Extended_Pictographic# 8.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Extended_Pictographic# 11.0 [2] (ðŸ§..🧂) cupcake..salt +1F9C3..1F9CA ; Extended_Pictographic# 12.0 [8] (🧃..🧊) beverage box..ice cube +1F9CB..1F9CC ; Extended_Pictographic# NA [2] (🧋..🧌) <reserved-1F9CB>..<reserved-1F9CC> +1F9CD..1F9CF ; Extended_Pictographic# 12.0 [3] (ðŸ§..ðŸ§) person standing..deaf person +1F9D0..1F9E6 ; Extended_Pictographic# 10.0 [23] (ðŸ§..🧦) face with monocle..socks +1F9E7..1F9FF ; Extended_Pictographic# 11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA00..1FA53 ; Extended_Pictographic# 12.0 [84] (🨀..🩓) NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP +1FA54..1FA5F ; Extended_Pictographic# NA [12] (🩔..🩟) <reserved-1FA54>..<reserved-1FA5F> +1FA60..1FA6D ; Extended_Pictographic# 11.0 [14] (🩠..ðŸ©) XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER +1FA6E..1FA6F ; Extended_Pictographic# NA [2] (🩮..🩯) <reserved-1FA6E>..<reserved-1FA6F> +1FA70..1FA73 ; Extended_Pictographic# 12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74..1FA77 ; Extended_Pictographic# NA [4] (🩴..🩷) <reserved-1FA74>..<reserved-1FA77> +1FA78..1FA7A ; Extended_Pictographic# 12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA7B..1FA7F ; Extended_Pictographic# NA [5] (🩻..🩿) <reserved-1FA7B>..<reserved-1FA7F> +1FA80..1FA82 ; Extended_Pictographic# 12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA8F ; Extended_Pictographic# NA [13] (🪃..ðŸª) <reserved-1FA83>..<reserved-1FA8F> +1FA90..1FA95 ; Extended_Pictographic# 12.0 [6] (ðŸª..🪕) ringed planet..banjo +1FA96..1FFFD ; Extended_Pictographic# NA[1384] (🪖..🿽) <reserved-1FA96>..<reserved-1FFFD> + +# Total elements: 3793 + +#EOF diff --git a/gnu/usr.bin/perl/lib/unicore/EquivalentUnifiedIdeograph.txt b/gnu/usr.bin/perl/lib/unicore/EquivalentUnifiedIdeograph.txt new file mode 100644 index 00000000000..52e335982ad --- /dev/null +++ b/gnu/usr.bin/perl/lib/unicore/EquivalentUnifiedIdeograph.txt @@ -0,0 +1,408 @@ +# EquivalentUnifiedIdeograph-12.1.0.txt +# Date: 2019-03-08, 23:59:00 GMT [KL, KW] +# © 2019 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# For documentation, see UAX #44: Unicode Character Database, +# at http://www.unicode.org/reports/tr44/ +# +# This file defines the following property: +# +# Equivalent_Unified_Ideograph +# +# This data file lists CJK radicals and CJK strokes (aka characters +# that have the Radical=Yes property or are in the CJK Strokes block) +# for which there are reasonably equivalent CJK unified ideographs in +# that they are visually identical or near-identical. +# +# The file contains a list of lines with mappings from one code point +# or code point range to an equivalent CJK unified ideograph. +# +# Each mapping line contains two fields, separated by a semicolon (';'). +# The first field contains a code point or code point range represented +# as a variable-length hexadecimal value with 4 to 6 digits. The second +# field contains a code point represented as a variable-length +# hexadecimal value with 4 to 6 digits. +# +# CJK radicals and CJK strokes for which no reasonably equivalent CJK +# unified ideographs exist are listed as comments at the end of the file. +# +# Formally, the default value of the Equivalent_Unified_Ideograph +# property for each code point is <none>, unless a mapping to some +# other character is specified in this data file. When a code point +# has the default value for the Equivalent_Unified_Ideograph property, +# that means that no other character exists whose representative glyph +# is a reasonably equivalent CJK unified ideograph. +# +# This file was originally created by Ken Lunde. +# +# ############################################################ +# +# Property: Equivalent_Unified_Ideograph +# +# @missing: 0000..10FFFF; <none> + +2E81 ; 5382 # CJK RADICAL CLIFF +2E82 ; 4E5B # CJK RADICAL SECOND ONE +2E83 ; 4E5A # CJK RADICAL SECOND TWO +2E84 ; 4E59 # CJK RADICAL SECOND THREE +2E85 ; 4EBB # CJK RADICAL PERSON +2E86 ; 5182 # CJK RADICAL BOX +2E87 ; 20628 # CJK RADICAL TABLE +2E88 ; 5200 # CJK RADICAL KNIFE ONE +2E89 ; 5202 # CJK RADICAL KNIFE TWO +2E8A ; 535C # CJK RADICAL DIVINATION +2E8B ; 353E # CJK RADICAL SEAL +2E8C..2E8D ; 5C0F # [2] CJK RADICAL SMALL ONE..CJK RADICAL SMALL TWO +2E8E ; 5140 # CJK RADICAL LAME ONE +2E8F ; 5C23 # CJK RADICAL LAME TWO +2E90 ; 5C22 # CJK RADICAL LAME THREE +2E91 ; 21BC2 # CJK RADICAL LAME FOUR +2E92 ; 5DF3 # CJK RADICAL SNAKE +2E93 ; 5E7A # CJK RADICAL THREAD +2E94 ; 5F51 # CJK RADICAL SNOUT ONE +2E95 ; 5F50 # CJK RADICAL SNOUT TWO +2E96 ; 5FC4 # CJK RADICAL HEART ONE +2E97 ; 5FC3 # CJK RADICAL HEART TWO +2E98 ; 624C # CJK RADICAL HAND +2E99 ; 6535 # CJK RADICAL RAP +2E9B ; 65E1 # CJK RADICAL CHOKE +2E9C ; 65E5 # CJK RADICAL SUN +2E9D ; 6708 # CJK RADICAL MOON +2E9E ; 6B7A # CJK RADICAL DEATH +2E9F ; 6BCD # CJK RADICAL MOTHER +2EA0 ; 6C11 # CJK RADICAL CIVILIAN +2EA1 ; 6C35 # CJK RADICAL WATER ONE +2EA2 ; 6C3A # CJK RADICAL WATER TWO +2EA3 ; 706C # CJK RADICAL FIRE +2EA4..2EA5 ; 722B # [2] CJK RADICAL PAW ONE..CJK RADICAL PAW TWO +2EA6 ; 4E2C # CJK RADICAL SIMPLIFIED HALF TREE TRUNK +2EA7 ; 725B # CJK RADICAL COW +2EA8 ; 72AD # CJK RADICAL DOG +2EA9 ; 738B # CJK RADICAL JADE +2EAA ; 24D14 # CJK RADICAL BOLT OF CLOTH +2EAB ; 76EE # CJK RADICAL EYE +2EAC ; 793A # CJK RADICAL SPIRIT ONE +2EAD ; 793B # CJK RADICAL SPIRIT TWO +2EAE ; 25AD7 # CJK RADICAL BAMBOO +2EAF ; 7CF9 # CJK RADICAL SILK +2EB0 ; 7E9F # CJK RADICAL C-SIMPLIFIED SILK +2EB1 ; 7F53 # CJK RADICAL NET ONE +2EB2 ; 7F52 # CJK RADICAL NET TWO +2EB3 ; 34C1 # CJK RADICAL NET THREE +2EB4 ; 5197 # CJK RADICAL NET FOUR +2EB5 ; 2626B # CJK RADICAL MESH +2EB6 ; 7F8A # CJK RADICAL SHEEP +2EB7 ; 2634C # CJK RADICAL RAM +2EB8 ; 2634B # CJK RADICAL EWE +2EB9 ; 8002 # CJK RADICAL OLD +2EBA ; 8080 # CJK RADICAL BRUSH ONE +2EBB ; 807F # CJK RADICAL BRUSH TWO +2EBC ; 8089 # CJK RADICAL MEAT +2EBD ; 26951 # CJK RADICAL MORTAR +2EBE..2EC0 ; 8279 # [3] CJK RADICAL GRASS ONE..CJK RADICAL GRASS THREE +2EC1 ; 864E # CJK RADICAL TIGER +2EC2 ; 8864 # CJK RADICAL CLOTHES +2EC3 ; 8980 # CJK RADICAL WEST ONE +2EC4 ; 897F # CJK RADICAL WEST TWO +2EC5 ; 89C1 # CJK RADICAL C-SIMPLIFIED SEE +2EC6 ; 89D2 # CJK RADICAL SIMPLIFIED HORN +2EC7 ; 278B2 # CJK RADICAL HORN +2EC8 ; 8BA0 # CJK RADICAL C-SIMPLIFIED SPEECH +2EC9 ; 8D1D # CJK RADICAL C-SIMPLIFIED SHELL +2ECA ; 27FB7 # CJK RADICAL FOOT +2ECB ; 8F66 # CJK RADICAL C-SIMPLIFIED CART +2ECC..2ECE ; 8FB6 # [3] CJK RADICAL SIMPLIFIED WALK..CJK RADICAL WALK TWO +2ECF ; 9091 # CJK RADICAL CITY +2ED0 ; 9485 # CJK RADICAL C-SIMPLIFIED GOLD +2ED1 ; 9577 # CJK RADICAL LONG ONE +2ED2 ; 9578 # CJK RADICAL LONG TWO +2ED3 ; 957F # CJK RADICAL C-SIMPLIFIED LONG +2ED4 ; 95E8 # CJK RADICAL C-SIMPLIFIED GATE +2ED5 ; 28E0F # CJK RADICAL MOUND ONE +2ED6 ; 961D # CJK RADICAL MOUND TWO +2ED7 ; 96E8 # CJK RADICAL RAIN +2ED8 ; 9752 # CJK RADICAL BLUE +2ED9 ; 97E6 # CJK RADICAL C-SIMPLIFIED TANNED LEATHER +2EDA ; 9875 # CJK RADICAL C-SIMPLIFIED LEAF +2EDB ; 98CE # CJK RADICAL C-SIMPLIFIED WIND +2EDC ; 98DE # CJK RADICAL C-SIMPLIFIED FLY +2EDD ; 98DF # CJK RADICAL EAT ONE +2EDE ; 2967F # CJK RADICAL EAT TWO +2EDF ; 98E0 # CJK RADICAL EAT THREE +2EE0 ; 9963 # CJK RADICAL C-SIMPLIFIED EAT +2EE1 ; 29810 # CJK RADICAL HEAD +2EE2 ; 9A6C # CJK RADICAL C-SIMPLIFIED HORSE +2EE3 ; 9AA8 # CJK RADICAL BONE +2EE4 ; 9B3C # CJK RADICAL GHOST +2EE5 ; 9C7C # CJK RADICAL C-SIMPLIFIED FISH +2EE6 ; 9E1F # CJK RADICAL C-SIMPLIFIED BIRD +2EE7 ; 5364 # CJK RADICAL C-SIMPLIFIED SALT +2EE8 ; 9EA6 # CJK RADICAL SIMPLIFIED WHEAT +2EE9 ; 9EC4 # CJK RADICAL SIMPLIFIED YELLOW +2EEA ; 9EFE # CJK RADICAL C-SIMPLIFIED FROG +2EEB ; 6589 # CJK RADICAL J-SIMPLIFIED EVEN +2EEC ; 9F50 # CJK RADICAL C-SIMPLIFIED EVEN +2EED ; 6B6F # CJK RADICAL J-SIMPLIFIED TOOTH +2EEE ; 9F7F # CJK RADICAL C-SIMPLIFIED TOOTH +2EEF ; 7ADC # CJK RADICAL J-SIMPLIFIED DRAGON +2EF0 ; 9F99 # CJK RADICAL C-SIMPLIFIED DRAGON +2EF1 ; 9F9C # CJK RADICAL TURTLE +2EF2 ; 4E80 # CJK RADICAL J-SIMPLIFIED TURTLE +2EF3 ; 9F9F # CJK RADICAL C-SIMPLIFIED TURTLE +2F00 ; 4E00 # KANGXI RADICAL ONE +2F01 ; 4E28 # KANGXI RADICAL LINE +2F02 ; 4E36 # KANGXI RADICAL DOT +2F03 ; 4E3F # KANGXI RADICAL SLASH +2F04 ; 4E59 # KANGXI RADICAL SECOND +2F05 ; 4E85 # KANGXI RADICAL HOOK +2F06 ; 4E8C # KANGXI RADICAL TWO +2F07 ; 4EA0 # KANGXI RADICAL LID +2F08 ; 4EBA # KANGXI RADICAL MAN +2F09 ; 513F # KANGXI RADICAL LEGS +2F0A ; 5165 # KANGXI RADICAL ENTER +2F0B ; 516B # KANGXI RADICAL EIGHT +2F0C ; 5182 # KANGXI RADICAL DOWN BOX +2F0D ; 5196 # KANGXI RADICAL COVER +2F0E ; 51AB # KANGXI RADICAL ICE +2F0F ; 51E0 # KANGXI RADICAL TABLE +2F10 ; 51F5 # KANGXI RADICAL OPEN BOX +2F11 ; 5200 # KANGXI RADICAL KNIFE +2F12 ; 529B # KANGXI RADICAL POWER +2F13 ; 52F9 # KANGXI RADICAL WRAP +2F14 ; 5315 # KANGXI RADICAL SPOON +2F15 ; 531A # KANGXI RADICAL RIGHT OPEN BOX +2F16 ; 5338 # KANGXI RADICAL HIDING ENCLOSURE +2F17 ; 5341 # KANGXI RADICAL TEN +2F18 ; 535C # KANGXI RADICAL DIVINATION +2F19 ; 5369 # KANGXI RADICAL SEAL +2F1A ; 5382 # KANGXI RADICAL CLIFF +2F1B ; 53B6 # KANGXI RADICAL PRIVATE +2F1C ; 53C8 # KANGXI RADICAL AGAIN +2F1D ; 53E3 # KANGXI RADICAL MOUTH +2F1E ; 56D7 # KANGXI RADICAL ENCLOSURE +2F1F ; 571F # KANGXI RADICAL EARTH +2F20 ; 58EB # KANGXI RADICAL SCHOLAR +2F21 ; 5902 # KANGXI RADICAL GO +2F22 ; 590A # KANGXI RADICAL GO SLOWLY +2F23 ; 5915 # KANGXI RADICAL EVENING +2F24 ; 5927 # KANGXI RADICAL BIG +2F25 ; 5973 # KANGXI RADICAL WOMAN +2F26 ; 5B50 # KANGXI RADICAL CHILD +2F27 ; 5B80 # KANGXI RADICAL ROOF +2F28 ; 5BF8 # KANGXI RADICAL INCH +2F29 ; 5C0F # KANGXI RADICAL SMALL +2F2A ; 5C22 # KANGXI RADICAL LAME +2F2B ; 5C38 # KANGXI RADICAL CORPSE +2F2C ; 5C6E # KANGXI RADICAL SPROUT +2F2D ; 5C71 # KANGXI RADICAL MOUNTAIN +2F2E ; 5DDB # KANGXI RADICAL RIVER +2F2F ; 5DE5 # KANGXI RADICAL WORK +2F30 ; 5DF1 # KANGXI RADICAL ONESELF +2F31 ; 5DFE # KANGXI RADICAL TURBAN +2F32 ; 5E72 # KANGXI RADICAL DRY +2F33 ; 5E7A # KANGXI RADICAL SHORT THREAD +2F34 ; 5E7F # KANGXI RADICAL DOTTED CLIFF +2F35 ; 5EF4 # KANGXI RADICAL LONG STRIDE +2F36 ; 5EFE # KANGXI RADICAL TWO HANDS +2F37 ; 5F0B # KANGXI RADICAL SHOOT +2F38 ; 5F13 # KANGXI RADICAL BOW +2F39 ; 5F50 # KANGXI RADICAL SNOUT +2F3A ; 5F61 # KANGXI RADICAL BRISTLE +2F3B ; 5F73 # KANGXI RADICAL STEP +2F3C ; 5FC3 # KANGXI RADICAL HEART +2F3D ; 6208 # KANGXI RADICAL HALBERD +2F3E ; 6236 # KANGXI RADICAL DOOR +2F3F ; 624B # KANGXI RADICAL HAND +2F40 ; 652F # KANGXI RADICAL BRANCH +2F41 ; 6534 # KANGXI RADICAL RAP +2F42 ; 6587 # KANGXI RADICAL SCRIPT +2F43 ; 6597 # KANGXI RADICAL DIPPER +2F44 ; 65A4 # KANGXI RADICAL AXE +2F45 ; 65B9 # KANGXI RADICAL SQUARE +2F46 ; 65E0 # KANGXI RADICAL NOT +2F47 ; 65E5 # KANGXI RADICAL SUN +2F48 ; 66F0 # KANGXI RADICAL SAY +2F49 ; 6708 # KANGXI RADICAL MOON +2F4A ; 6728 # KANGXI RADICAL TREE +2F4B ; 6B20 # KANGXI RADICAL LACK +2F4C ; 6B62 # KANGXI RADICAL STOP +2F4D ; 6B79 # KANGXI RADICAL DEATH +2F4E ; 6BB3 # KANGXI RADICAL WEAPON +2F4F ; 6BCB # KANGXI RADICAL DO NOT +2F50 ; 6BD4 # KANGXI RADICAL COMPARE +2F51 ; 6BDB # KANGXI RADICAL FUR +2F52 ; 6C0F # KANGXI RADICAL CLAN +2F53 ; 6C14 # KANGXI RADICAL STEAM +2F54 ; 6C34 # KANGXI RADICAL WATER +2F55 ; 706B # KANGXI RADICAL FIRE +2F56 ; 722A # KANGXI RADICAL CLAW +2F57 ; 7236 # KANGXI RADICAL FATHER +2F58 ; 723B # KANGXI RADICAL DOUBLE X +2F59 ; 723F # KANGXI RADICAL HALF TREE TRUNK +2F5A ; 7247 # KANGXI RADICAL SLICE +2F5B ; 7259 # KANGXI RADICAL FANG +2F5C ; 725B # KANGXI RADICAL COW +2F5D ; 72AC # KANGXI RADICAL DOG +2F5E ; 7384 # KANGXI RADICAL PROFOUND +2F5F ; 7389 # KANGXI RADICAL JADE +2F60 ; 74DC # KANGXI RADICAL MELON +2F61 ; 74E6 # KANGXI RADICAL TILE +2F62 ; 7518 # KANGXI RADICAL SWEET +2F63 ; 751F # KANGXI RADICAL LIFE +2F64 ; 7528 # KANGXI RADICAL USE +2F65 ; 7530 # KANGXI RADICAL FIELD +2F66 ; 758B # KANGXI RADICAL BOLT OF CLOTH +2F67 ; 7592 # KANGXI RADICAL SICKNESS +2F68 ; 7676 # KANGXI RADICAL DOTTED TENT +2F69 ; 767D # KANGXI RADICAL WHITE +2F6A ; 76AE # KANGXI RADICAL SKIN +2F6B ; 76BF # KANGXI RADICAL DISH +2F6C ; 76EE # KANGXI RADICAL EYE +2F6D ; 77DB # KANGXI RADICAL SPEAR +2F6E ; 77E2 # KANGXI RADICAL ARROW +2F6F ; 77F3 # KANGXI RADICAL STONE +2F70 ; 793A # KANGXI RADICAL SPIRIT +2F71 ; 79B8 # KANGXI RADICAL TRACK +2F72 ; 79BE # KANGXI RADICAL GRAIN +2F73 ; 7A74 # KANGXI RADICAL CAVE +2F74 ; 7ACB # KANGXI RADICAL STAND +2F75 ; 7AF9 # KANGXI RADICAL BAMBOO +2F76 ; 7C73 # KANGXI RADICAL RICE +2F77 ; 7CF8 # KANGXI RADICAL SILK +2F78 ; 7F36 # KANGXI RADICAL JAR +2F79 ; 7F51 # KANGXI RADICAL NET +2F7A ; 7F8A # KANGXI RADICAL SHEEP +2F7B ; 7FBD # KANGXI RADICAL FEATHER +2F7C ; 8001 # KANGXI RADICAL OLD +2F7D ; 800C # KANGXI RADICAL AND +2F7E ; 8012 # KANGXI RADICAL PLOW +2F7F ; 8033 # KANGXI RADICAL EAR +2F80 ; 807F # KANGXI RADICAL BRUSH +2F81 ; 8089 # KANGXI RADICAL MEAT +2F82 ; 81E3 # KANGXI RADICAL MINISTER +2F83 ; 81EA # KANGXI RADICAL SELF +2F84 ; 81F3 # KANGXI RADICAL ARRIVE +2F85 ; 81FC # KANGXI RADICAL MORTAR +2F86 ; 820C # KANGXI RADICAL TONGUE +2F87 ; 821B # KANGXI RADICAL OPPOSE +2F88 ; 821F # KANGXI RADICAL BOAT +2F89 ; 826E # KANGXI RADICAL STOPPING +2F8A ; 8272 # KANGXI RADICAL COLOR +2F8B ; 8278 # KANGXI RADICAL GRASS +2F8C ; 864D # KANGXI RADICAL TIGER +2F8D ; 866B # KANGXI RADICAL INSECT +2F8E ; 8840 # KANGXI RADICAL BLOOD +2F8F ; 884C # KANGXI RADICAL WALK ENCLOSURE +2F90 ; 8863 # KANGXI RADICAL CLOTHES +2F91 ; 897E # KANGXI RADICAL WEST +2F92 ; 898B # KANGXI RADICAL SEE +2F93 ; 89D2 # KANGXI RADICAL HORN +2F94 ; 8A00 # KANGXI RADICAL SPEECH +2F95 ; 8C37 # KANGXI RADICAL VALLEY +2F96 ; 8C46 # KANGXI RADICAL BEAN +2F97 ; 8C55 # KANGXI RADICAL PIG +2F98 ; 8C78 # KANGXI RADICAL BADGER +2F99 ; 8C9D # KANGXI RADICAL SHELL +2F9A ; 8D64 # KANGXI RADICAL RED +2F9B ; 8D70 # KANGXI RADICAL RUN +2F9C ; 8DB3 # KANGXI RADICAL FOOT +2F9D ; 8EAB # KANGXI RADICAL BODY +2F9E ; 8ECA # KANGXI RADICAL CART +2F9F ; 8F9B # KANGXI RADICAL BITTER +2FA0 ; 8FB0 # KANGXI RADICAL MORNING +2FA1 ; 8FB5 # KANGXI RADICAL WALK +2FA2 ; 9091 # KANGXI RADICAL CITY +2FA3 ; 9149 # KANGXI RADICAL WINE +2FA4 ; 91C6 # KANGXI RADICAL DISTINGUISH +2FA5 ; 91CC # KANGXI RADICAL VILLAGE +2FA6 ; 91D1 # KANGXI RADICAL GOLD +2FA7 ; 9577 # KANGXI RADICAL LONG +2FA8 ; 9580 # KANGXI RADICAL GATE +2FA9 ; 961C # KANGXI RADICAL MOUND +2FAA ; 96B6 # KANGXI RADICAL SLAVE +2FAB ; 96B9 # KANGXI RADICAL SHORT TAILED BIRD +2FAC ; 96E8 # KANGXI RADICAL RAIN +2FAD ; 9751 # KANGXI RADICAL BLUE +2FAE ; 975E # KANGXI RADICAL WRONG +2FAF ; 9762 # KANGXI RADICAL FACE +2FB0 ; 9769 # KANGXI RADICAL LEATHER +2FB1 ; 97CB # KANGXI RADICAL TANNED LEATHER +2FB2 ; 97ED # KANGXI RADICAL LEEK +2FB3 ; 97F3 # KANGXI RADICAL SOUND +2FB4 ; 9801 # KANGXI RADICAL LEAF +2FB5 ; 98A8 # KANGXI RADICAL WIND +2FB6 ; 98DB # KANGXI RADICAL FLY +2FB7 ; 98DF # KANGXI RADICAL EAT +2FB8 ; 9996 # KANGXI RADICAL HEAD +2FB9 ; 9999 # KANGXI RADICAL FRAGRANT +2FBA ; 99AC # KANGXI RADICAL HORSE +2FBB ; 9AA8 # KANGXI RADICAL BONE +2FBC ; 9AD8 # KANGXI RADICAL TALL +2FBD ; 9ADF # KANGXI RADICAL HAIR +2FBE ; 9B25 # KANGXI RADICAL FIGHT +2FBF ; 9B2F # KANGXI RADICAL SACRIFICIAL WINE +2FC0 ; 9B32 # KANGXI RADICAL CAULDRON +2FC1 ; 9B3C # KANGXI RADICAL GHOST +2FC2 ; 9B5A # KANGXI RADICAL FISH +2FC3 ; 9CE5 # KANGXI RADICAL BIRD +2FC4 ; 9E75 # KANGXI RADICAL SALT +2FC5 ; 9E7F # KANGXI RADICAL DEER +2FC6 ; 9EA5 # KANGXI RADICAL WHEAT +2FC7 ; 9EBB # KANGXI RADICAL HEMP +2FC8 ; 9EC3 # KANGXI RADICAL YELLOW +2FC9 ; 9ECD # KANGXI RADICAL MILLET +2FCA ; 9ED1 # KANGXI RADICAL BLACK +2FCB ; 9EF9 # KANGXI RADICAL EMBROIDERY +2FCC ; 9EFD # KANGXI RADICAL FROG +2FCD ; 9F0E # KANGXI RADICAL TRIPOD +2FCE ; 9F13 # KANGXI RADICAL DRUM +2FCF ; 9F20 # KANGXI RADICAL RAT +2FD0 ; 9F3B # KANGXI RADICAL NOSE +2FD1 ; 9F4A # KANGXI RADICAL EVEN +2FD2 ; 9F52 # KANGXI RADICAL TOOTH +2FD3 ; 9F8D # KANGXI RADICAL DRAGON +2FD4 ; 9F9C # KANGXI RADICAL TURTLE +2FD5 ; 9FA0 # KANGXI RADICAL FLUTE +31C6 ; 200CC # CJK STROKE HZG +31CF ; 4E40 # CJK STROKE N +31D0 ; 4E00 # CJK STROKE H +31D1 ; 4E28 # CJK STROKE S +31D2..31D3 ; 4E3F # [2] CJK STROKE P..CJK STROKE SP +31D4 ; 4E36 # CJK STROKE D +31D5 ; 200CD # CJK STROKE HZ +31D6 ; 4E5B # CJK STROKE HG +31D7 ; 200CA # CJK STROKE SZ +31D8 ; 200CE # CJK STROKE SWZ +31D9 ; 2010C # CJK STROKE ST +31DA ; 4E85 # CJK STROKE SG +31DB ; 21FE8 # CJK STROKE PD +31DC ; 200CB # CJK STROKE PZ +31DD ; 4E40 # CJK STROKE TN +31DE ; 200D1 # CJK STROKE SZZ +31DF ; 4E5A # CJK STROKE SWG +31E0 ; 4E59 # CJK STROKE HXWG +31E1 ; 2010E # CJK STROKE HZZZG + +# The following characters have no equivalent CJK unified ideograph. + +# 2E80; CJK RADICAL REPEAT +# 31C0; CJK STROKE T +# 31C1; CJK STROKE WG +# 31C2; CJK STROKE XG +# 31C3; CJK STROKE BXG +# 31C4; CJK STROKE SW +# 31C5; CJK STROKE HZZ +# 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 +# 31E2; CJK STROKE PG +# 31E3; CJK STROKE Q + +# EOF diff --git a/gnu/usr.bin/perl/lib/unicore/VerticalOrientation.txt b/gnu/usr.bin/perl/lib/unicore/VerticalOrientation.txt index 567df2f2cb7..445ad056181 100644 --- a/gnu/usr.bin/perl/lib/unicore/VerticalOrientation.txt +++ b/gnu/usr.bin/perl/lib/unicore/VerticalOrientation.txt @@ -1,6 +1,6 @@ -# VerticalOrientation-10.0.0.txt -# Date: 2017-03-08, 02:05:46 GMT [EM, KI, LI] -# © 2017 Unicode®, Inc. +# VerticalOrientation-12.1.0.txt +# Date: 2019-04-01, 09:27:26 GMT [EM, KI, LI] +# © 2019 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # @@ -42,18 +42,20 @@ # Specials: U+FFF0..U+FFF8 # Siddham: U+11580..U+115FF # Zanabazar Square & Soyombo: U+11A00..U+11AAF -# Egyptian Hieroglyphs: U+13000..U+1342F +# Egyptian Hieroglyphs & Controls: U+13000..U+1343F # Anatolian Hieroglyphs: U+14400..U+1467F # Ideographic Symbols & Tangut: U+16FE0..U+18AFF -# Kana Extended-A: U+1B100..U+1B12F +# Kana Extended-A & Small Kana Ext: U+1B100..U+1B16F # Nushu: U+1B170..U+1B2FF # Musical Symbols: U+1D000..U+1D1FF +# Mayan Numerals: U+1D2E0..U+1D2FF # Symbols & Rods: U+1D300..U+1D37F # Sutton SignWriting: U+1D800..U+1DAAF # Game Symbols: U+1F000..U+1F0FF # Enclosed Symbols: U+1F100..U+1F2FF # Symbols: U+1F680..U+1F7FF # Symbols and Pictographs: U+1F900..U+1F9FF +# Chess Symbols & Pictographs Ext-A: U+1FA00..U+1FAFF # Plane 2: U+20000..U+2FFFD # Plane 3: U+30000..U+3FFFD # Plane 15 PUA: U+F0000..U+FFFFD @@ -176,7 +178,7 @@ 0531..0556 ; R # Lu [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; R # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 055A..055F ; R # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK -0561..0587 ; R # Ll [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN +0560..0588 ; R # Ll [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE 0589 ; R # Po ARMENIAN FULL STOP 058A ; R # Pd ARMENIAN HYPHEN 058D..058E ; R # So [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN @@ -191,7 +193,7 @@ 05C6 ; R # Po HEBREW PUNCTUATION NUN HAFUKHA 05C7 ; R # Mn HEBREW POINT QAMATS QATAN 05D0..05EA ; R # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV -05F0..05F2 ; R # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD +05EF..05F2 ; R # Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD 05F3..05F4 ; R # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM 0600..0605 ; R # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE 0606..0608 ; R # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY @@ -245,6 +247,8 @@ 07F6 ; R # So NKO SYMBOL OO DENNEN 07F7..07F9 ; R # Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK 07FA ; R # Lm NKO LAJANYALAN +07FD ; R # Mn NKO DANTAYALAN +07FE..07FF ; R # Sc [2] NKO DOROME SIGN..NKO TAMAN SIGN 0800..0815 ; R # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 0816..0819 ; R # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH 081A ; R # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT @@ -260,7 +264,7 @@ 0860..086A ; R # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA 08A0..08B4 ; R # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; R # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -08D4..08E1 ; R # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA +08D3..08E1 ; R # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA 08E2 ; R # Cf ARABIC DISPUTED END OF AYAH 08E3..08FF ; R # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA 0900..0902 ; R # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA @@ -313,6 +317,7 @@ 09FB ; R # Sc BENGALI GANDA MARK 09FC ; R # Lo BENGALI LETTER VEDIC ANUSVARA 09FD ; R # Po BENGALI ABBREVIATION SIGN +09FE ; R # Mn BENGALI SANDHI MARK 0A01..0A02 ; R # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A03 ; R # Mc GURMUKHI SIGN VISARGA 0A05..0A0A ; R # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU @@ -334,6 +339,7 @@ 0A70..0A71 ; R # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A72..0A74 ; R # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A75 ; R # Mn GURMUKHI SIGN YAKASH +0A76 ; R # Po GURMUKHI ABBREVIATION SIGN 0A81..0A82 ; R # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0A83 ; R # Mc GUJARATI SIGN VISARGA 0A85..0A8D ; R # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E @@ -410,6 +416,7 @@ 0BFA ; R # So TAMIL NUMBER SIGN 0C00 ; R # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; R # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C04 ; R # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE 0C05..0C0C ; R # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; R # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; R # Lo [23] TELUGU LETTER O..TELUGU LETTER NA @@ -424,11 +431,13 @@ 0C60..0C61 ; R # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; R # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; R # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE +0C77 ; R # Po TELUGU SIGN SIDDHAM 0C78..0C7E ; R # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F ; R # So TELUGU SIGN TUUMU 0C80 ; R # Lo KANNADA SIGN SPACING CANDRABINDU 0C81 ; R # Mn KANNADA SIGN CANDRABINDU 0C82..0C83 ; R # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA +0C84 ; R # Po KANNADA SIGN SIDDHAM 0C85..0C8C ; R # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; R # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; R # Lo [23] KANNADA LETTER O..KANNADA LETTER NA @@ -499,20 +508,13 @@ 0E5A..0E5B ; R # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT 0E81..0E82 ; R # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; R # Lo LAO LETTER KHO TAM -0E87..0E88 ; R # Lo [2] LAO LETTER NGO..LAO LETTER CO -0E8A ; R # Lo LAO LETTER SO TAM -0E8D ; R # Lo LAO LETTER NYO -0E94..0E97 ; R # Lo [4] LAO LETTER DO..LAO LETTER THO TAM -0E99..0E9F ; R # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG -0EA1..0EA3 ; R # Lo [3] LAO LETTER MO..LAO LETTER LO LING +0E86..0E8A ; R # Lo [5] LAO LETTER PALI GHA..LAO LETTER SO TAM +0E8C..0EA3 ; R # Lo [24] LAO LETTER PALI JHA..LAO LETTER LO LING 0EA5 ; R # Lo LAO LETTER LO LOOT -0EA7 ; R # Lo LAO LETTER WO -0EAA..0EAB ; R # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG -0EAD..0EB0 ; R # Lo [4] LAO LETTER O..LAO VOWEL SIGN A +0EA7..0EB0 ; R # Lo [10] LAO LETTER WO..LAO VOWEL SIGN A 0EB1 ; R # Mn LAO VOWEL SIGN MAI KAN 0EB2..0EB3 ; R # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM -0EB4..0EB9 ; R # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU -0EBB..0EBC ; R # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO +0EB4..0EBC ; R # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO 0EBD ; R # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; R # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; R # Lm LAO KO LA @@ -595,10 +597,10 @@ 10A0..10C5 ; R # Lu [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; R # Lu GEORGIAN CAPITAL LETTER YN 10CD ; R # Lu GEORGIAN CAPITAL LETTER AEN -10D0..10FA ; R # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN +10D0..10FA ; R # Ll [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FB ; R # Po GEORGIAN PARAGRAPH SEPARATOR 10FC ; R # Lm MODIFIER LETTER GEORGIAN NAR -10FD..10FF ; R # Lo [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN +10FD..10FF ; R # Ll [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 1100..11FF ; U # Lo [256] HANGUL CHOSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN 1200..1248 ; R # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA 124A..124D ; R # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE @@ -625,7 +627,8 @@ 13F8..13FD ; R # Ll [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1400 ; R # Pd CANADIAN SYLLABICS HYPHEN 1401..166C ; U # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA -166D..166E ; U # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP +166D ; U # So CANADIAN SYLLABICS CHI SIGN +166E ; U # Po CANADIAN SYLLABICS FULL STOP 166F..167F ; U # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1680 ; R # Zs OGHAM SPACE MARK 1681..169A ; R # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH @@ -670,7 +673,7 @@ 1810..1819 ; R # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; R # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; R # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844..1877 ; R # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA +1844..1878 ; R # Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS 1880..1884 ; R # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1885..1886 ; R # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 1887..18A8 ; R # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA @@ -775,6 +778,8 @@ 1C78..1C7D ; R # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C7E..1C7F ; R # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD 1C80..1C88 ; R # Ll [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C90..1CBA ; R # Lu [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN +1CBD..1CBF ; R # Lu [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1CC0..1CC7 ; R # Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA 1CD0..1CD2 ; R # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD3 ; R # Po VEDIC SIGN NIHSHVASA @@ -783,12 +788,12 @@ 1CE2..1CE8 ; R # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CE9..1CEC ; R # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CED ; R # Mn VEDIC SIGN TIRYAK -1CEE..1CF1 ; R # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA -1CF2..1CF3 ; R # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA +1CEE..1CF3 ; R # Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA 1CF4 ; R # Mn VEDIC TONE CANDRA ABOVE 1CF5..1CF6 ; R # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1CF7 ; R # Mc VEDIC SIGN ATIKRAMA 1CF8..1CF9 ; R # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE +1CFA ; R # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA 1D00..1D2B ; R # Ll [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; R # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; R # Ll [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G @@ -1073,15 +1078,11 @@ 2B5A..2B73 ; R # So [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2B95 ; R # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW 2B98..2BB7 ; R # So [32] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..RIBBON ARROW RIGHT DOWN -2BB8..2BB9 ; U # So [2] UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR..UP ARROWHEAD IN A RECTANGLE BOX -2BBA..2BBC ; U # Cn [3] <reserved-2BBA>..<reserved-2BBC> -2BBD..2BC8 ; U # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED -2BC9 ; U # Cn <reserved-2BC9> -2BCA..2BD1 ; U # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN +2BB8..2BD1 ; U # So [26] UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR..UNCERTAINTY SIGN 2BD2 ; R # So GROUP MARK -2BD3..2BEB ; U # Cn [25] <reserved-2BD3>..<reserved-2BEB> +2BD3..2BEB ; U # So [25] PLUTO FORM TWO..STAR WITH RIGHT HALF BLACK 2BEC..2BEF ; R # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS -2BF0..2BFF ; U # Cn [16] <reserved-2BF0>..<reserved-2BFF> +2BF0..2BFF ; U # So [16] ERIS FORM ONE..HELLSCHREIBER PAUSE SYMBOL 2C00..2C2E ; R # Lu [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; R # Ll [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; R # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E @@ -1149,7 +1150,7 @@ 2E40 ; R # Pd DOUBLE HYPHEN 2E41 ; R # Po REVERSED COMMA 2E42 ; R # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK -2E43..2E49 ; R # Po [7] DASH WITH LEFT UPTURN..DOUBLE STACKED COMMA +2E43..2E4F ; R # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER 2E80..2E99 ; U # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP 2E9A ; U # Cn <reserved-2E9A> 2E9B..2EF3 ; U # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE @@ -1257,8 +1258,7 @@ 3100..3104 ; U # Cn [5] <reserved-3100>..<reserved-3104> 3105..3126 ; U # Lo [34] BOPOMOFO LETTER B..BOPOMOFO LETTER ER 3127 ; Tu # Lo BOPOMOFO LETTER I -3128..312E ; U # Lo [7] BOPOMOFO LETTER U..BOPOMOFO LETTER O WITH DOT ABOVE -312F ; U # Cn <reserved-312F> +3128..312F ; U # Lo [8] BOPOMOFO LETTER U..BOPOMOFO LETTER NN 3130 ; U # Cn <reserved-3130> 3131..318E ; U # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 318F ; U # Cn <reserved-318F> @@ -1282,7 +1282,7 @@ 328A..32B0 ; U # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT 32B1..32BF ; U # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY 32C0..32FE ; U # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO -32FF ; U # Cn <reserved-32FF> +32FF ; Tu # So SQUARE ERA NAME REIWA 3300..3357 ; Tu # So [88] SQUARE APAATO..SQUARE WATTO 3358..337A ; U # So [35] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..SQUARE IU 337B..337F ; Tu # So [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION @@ -1290,8 +1290,8 @@ 3400..4DB5 ; U # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4DB6..4DBF ; U # Cn [10] <reserved-4DB6>..<reserved-4DBF> 4DC0..4DFF ; U # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION -4E00..9FEA ; U # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA -9FEB..9FFF ; U # Cn [21] <reserved-9FEB>..<reserved-9FFF> +4E00..9FEF ; U # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF +9FF0..9FFF ; U # Cn [16] <reserved-9FF0>..<reserved-9FFF> A000..A014 ; U # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; U # Lm YI SYLLABLE WU A016..A48C ; U # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR @@ -1332,8 +1332,8 @@ A788 ; R # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A ; R # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN A78B..A78E ; R # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; R # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7AE ; R # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I -A7B0..A7B7 ; R # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA +A790..A7BF ; R # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U +A7C2..A7C6 ; R # L& [5] LATIN CAPITAL LETTER ANGLICANA W..LATIN CAPITAL LETTER Z WITH PALATAL HOOK A7F7 ; R # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; R # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; R # Ll LATIN LETTER SMALL CAPITAL TURNED M @@ -1366,7 +1366,8 @@ A8F2..A8F7 ; R # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI A8F8..A8FA ; R # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FB ; R # Lo DEVANAGARI HEADSTROKE A8FC ; R # Po DEVANAGARI SIGN SIDDHAM -A8FD ; R # Lo DEVANAGARI JAIN OM +A8FD..A8FE ; R # Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY +A8FF ; R # Mn DEVANAGARI VOWEL SIGN AY A900..A909 ; R # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A90A..A925 ; R # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A926..A92D ; R # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU @@ -1384,8 +1385,8 @@ A9B3 ; R # Mn JAVANESE SIGN CECAK TELU A9B4..A9B5 ; R # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9B6..A9B9 ; R # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BA..A9BB ; R # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE -A9BC ; R # Mn JAVANESE VOWEL SIGN PEPET -A9BD..A9C0 ; R # Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON +A9BC..A9BD ; R # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET +A9BE..A9C0 ; R # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON A9C1..A9CD ; R # Po [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH A9CF ; R # Lm JAVANESE PANGRANGKEP A9D0..A9D9 ; R # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE @@ -1449,7 +1450,7 @@ AB28..AB2E ; R # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; R # Ll [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5B ; R # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F ; R # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB60..AB65 ; R # Ll [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA +AB60..AB67 ; R # Ll [8] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK AB70..ABBF ; R # Ll [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; R # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4 ; R # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP @@ -1688,10 +1689,10 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 10A0C..10A0F ; R # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A10..10A13 ; R # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; R # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA -10A19..10A33 ; R # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA +10A19..10A35 ; R # Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA 10A38..10A3A ; R # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F ; R # Mn KHAROSHTHI VIRAMA -10A40..10A47 ; R # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND +10A40..10A48 ; R # No [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF 10A50..10A58 ; R # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES 10A60..10A7C ; R # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A7D..10A7E ; R # No [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY @@ -1717,7 +1718,18 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 10C80..10CB2 ; R # Lu [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; R # Ll [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10CFA..10CFF ; R # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND +10D00..10D23 ; R # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA +10D24..10D27 ; R # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10D30..10D39 ; R # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE 10E60..10E7E ; R # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS +10F00..10F1C ; R # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL +10F1D..10F26 ; R # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF +10F27 ; R # Lo OLD SOGDIAN LIGATURE AYIN-DALETH +10F30..10F45 ; R # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN +10F46..10F50 ; R # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F51..10F54 ; R # No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED +10F55..10F59 ; R # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT +10FE0..10FF6 ; R # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11000 ; R # Mc BRAHMI SIGN CANDRABINDU 11001 ; R # Mn BRAHMI SIGN ANUSVARA 11002 ; R # Mc BRAHMI SIGN VISARGA @@ -1737,6 +1749,7 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 110BB..110BC ; R # Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN 110BD ; R # Cf KAITHI NUMBER SIGN 110BE..110C1 ; R # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA +110CD ; R # Cf KAITHI NUMBER SIGN ABOVE 110D0..110E8 ; R # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; R # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11100..11102 ; R # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA @@ -1746,6 +1759,8 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1112D..11134 ; R # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA 11136..1113F ; R # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE 11140..11143 ; R # Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK +11144 ; R # Lo CHAKMA LETTER LHAA +11145..11146 ; R # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI 11150..11172 ; R # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11173 ; R # Mn MAHAJANI SIGN NUKTA 11174..11175 ; R # Po [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK @@ -1757,8 +1772,8 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 111B6..111BE ; R # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; R # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; R # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM -111C5..111C9 ; R # Po [5] SHARADA DANDA..SHARADA SANDHI MARK -111CA..111CC ; R # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK +111C5..111C8 ; R # Po [4] SHARADA DANDA..SHARADA SEPARATOR +111C9..111CC ; R # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK 111CD ; R # Po SHARADA SUTRA MARK 111D0..111D9 ; R # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; R # Lo SHARADA EKAM @@ -1795,7 +1810,7 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1132A..11330 ; R # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; R # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; R # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA -1133C ; R # Mn GRANTHA SIGN NUKTA +1133B..1133C ; R # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA 1133D ; R # Lo GRANTHA SIGN AVAGRAHA 1133E..1133F ; R # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; R # Mn GRANTHA VOWEL SIGN II @@ -1820,6 +1835,8 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 11450..11459 ; R # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE 1145B ; R # Po NEWA PLACEHOLDER MARK 1145D ; R # Po NEWA INSERTION SIGN +1145E ; R # Mn NEWA SANDHI MARK +1145F ; R # Lo NEWA LETTER VEDIC ANUSVARA 11480..114AF ; R # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B0..114B2 ; R # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8 ; R # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL @@ -1864,8 +1881,9 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 116B0..116B5 ; R # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B6 ; R # Mc TAKRI SIGN VIRAMA 116B7 ; R # Mn TAKRI SIGN NUKTA +116B8 ; R # Lo TAKRI LETTER ARCHAIC KHA 116C0..116C9 ; R # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE -11700..11719 ; R # Lo [26] AHOM LETTER KA..AHOM LETTER JHA +11700..1171A ; R # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA 1171D..1171F ; R # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; R # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; R # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU @@ -1875,14 +1893,29 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1173A..1173B ; R # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY 1173C..1173E ; R # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 1173F ; R # So AHOM SYMBOL VI +11800..1182B ; R # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA +1182C..1182E ; R # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II +1182F..11837 ; R # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA +11838 ; R # Mc DOGRA SIGN VISARGA +11839..1183A ; R # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA +1183B ; R # Po DOGRA ABBREVIATION SIGN 118A0..118DF ; R # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118E0..118E9 ; R # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118EA..118F2 ; R # No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY 118FF ; R # Lo WARANG CITI OM +119A0..119A7 ; R # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR +119AA..119D0 ; R # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA +119D1..119D3 ; R # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II +119D4..119D7 ; R # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR +119DA..119DB ; R # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI +119DC..119DF ; R # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA +119E0 ; R # Mn NANDINAGARI SIGN VIRAMA +119E1 ; R # Lo NANDINAGARI SIGN AVAGRAHA +119E2 ; R # Po NANDINAGARI SIGN SIDDHAM +119E3 ; R # Lo NANDINAGARI HEADSTROKE +119E4 ; R # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E 11A00 ; U # Lo ZANABAZAR SQUARE LETTER A -11A01..11A06 ; U # Mn [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O -11A07..11A08 ; U # Mc [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU -11A09..11A0A ; U # Mn [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK +11A01..11A0A ; U # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK 11A0B..11A32 ; U # Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA 11A33..11A38 ; U # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA 11A39 ; U # Mc ZANABAZAR SQUARE SIGN VISARGA @@ -1895,14 +1928,12 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 11A51..11A56 ; U # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE 11A57..11A58 ; U # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU 11A59..11A5B ; U # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK -11A5C..11A83 ; U # Lo [40] SOYOMBO LETTER KA..SOYOMBO LETTER KSSA -11A84..11A85 ; U # Cn [2] <reserved-11A84>..<reserved-11A85> -11A86..11A89 ; U # Lo [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA +11A5C..11A89 ; U # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA 11A8A..11A96 ; U # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA 11A97 ; U # Mc SOYOMBO SIGN VISARGA 11A98..11A99 ; U # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER 11A9A..11A9C ; U # Po [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD -11A9D ; U # Cn <reserved-11A9D> +11A9D ; U # Lo SOYOMBO MARK PLUTA 11A9E..11AA2 ; U # Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2 11AA3..11AAF ; U # Cn [13] <reserved-11AA3>..<reserved-11AAF> 11AC0..11AF8 ; R # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL @@ -1936,12 +1967,34 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 11D46 ; R # Lo MASARAM GONDI REPHA 11D47 ; R # Mn MASARAM GONDI RA-KARA 11D50..11D59 ; R # Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE +11D60..11D65 ; R # Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU +11D67..11D68 ; R # Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI +11D6A..11D89 ; R # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA +11D8A..11D8E ; R # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU +11D90..11D91 ; R # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI +11D93..11D94 ; R # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU +11D95 ; R # Mn GUNJALA GONDI SIGN ANUSVARA +11D96 ; R # Mc GUNJALA GONDI SIGN VISARGA +11D97 ; R # Mn GUNJALA GONDI VIRAMA +11D98 ; R # Lo GUNJALA GONDI OM +11DA0..11DA9 ; R # Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE +11EE0..11EF2 ; R # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA +11EF3..11EF4 ; R # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U +11EF5..11EF6 ; R # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11EF7..11EF8 ; R # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11FC0..11FD4 ; R # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH +11FD5..11FDC ; R # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI +11FDD..11FE0 ; R # Sc [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN +11FE1..11FF1 ; R # So [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA +11FFF ; R # Po TAMIL PUNCTUATION END OF TEXT 12000..12399 ; R # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; R # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474 ; R # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12480..12543 ; R # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; U # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 1342F ; U # Cn <reserved-1342F> +13430..13438 ; U # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT +13439..1343F ; U # Cn [7] <reserved-13439>..<reserved-1343F> 14400..14646 ; U # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 14647..1467F ; U # Cn [57] <reserved-14647>..<reserved-1467F> 16800..16A38 ; R # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ @@ -1962,20 +2015,31 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 16B5B..16B61 ; R # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS 16B63..16B77 ; R # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; R # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ -16F00..16F44 ; R # Lo [69] MIAO LETTER PA..MIAO LETTER HHA +16E40..16E7F ; R # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y +16E80..16E96 ; R # No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM +16E97..16E9A ; R # Po [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH +16F00..16F4A ; R # Lo [75] MIAO LETTER PA..MIAO LETTER RTE +16F4F ; R # Mn MIAO SIGN CONSONANT MODIFIER BAR 16F50 ; R # Lo MIAO LETTER NASALIZATION -16F51..16F7E ; R # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG +16F51..16F87 ; R # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 16F8F..16F92 ; R # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; R # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0..16FE1 ; U # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK -16FE2..16FFF ; U # Cn [30] <reserved-16FE2>..<reserved-16FFF> -17000..187EC ; U # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -187ED..187FF ; U # Cn [19] <reserved-187ED>..<reserved-187FF> +16FE2 ; U # Po OLD CHINESE HOOK MARK +16FE3 ; U # Lm OLD CHINESE ITERATION MARK +16FE4..16FFF ; U # Cn [28] <reserved-16FE4>..<reserved-16FFF> +17000..187F7 ; U # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 +187F8..187FF ; U # Cn [8] <reserved-187F8>..<reserved-187FF> 18800..18AF2 ; U # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 18AF3..18AFF ; U # Cn [13] <reserved-18AF3>..<reserved-18AFF> 1B000..1B0FF ; U # Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 1B100..1B11E ; U # Lo [31] HENTAIGANA LETTER RE-3..HENTAIGANA LETTER N-MU-MO-2 1B11F..1B12F ; U # Cn [17] <reserved-1B11F>..<reserved-1B12F> +1B130..1B14F ; U # Cn [32] <reserved-1B130>..<reserved-1B14F> +1B150..1B152 ; U # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B153..1B163 ; U # Cn [17] <reserved-1B153>..<reserved-1B163> +1B164..1B167 ; U # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N +1B168..1B16F ; U # Cn [8] <reserved-1B168>..<reserved-1B16F> 1B170..1B2FB ; U # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1B2FC..1B2FF ; U # Cn [4] <reserved-1B2FC>..<reserved-1B2FF> 1BC00..1BC6A ; R # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -2006,10 +2070,12 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1D200..1D241 ; R # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242..1D244 ; R # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D245 ; R # So GREEK MUSICAL LEIMMA +1D2E0..1D2F3 ; U # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN +1D2F4..1D2FF ; U # Cn [12] <reserved-1D2F4>..<reserved-1D2FF> 1D300..1D356 ; U # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D357..1D35F ; U # Cn [9] <reserved-1D357>..<reserved-1D35F> -1D360..1D371 ; U # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE -1D372..1D37F ; U # Cn [14] <reserved-1D372>..<reserved-1D37F> +1D360..1D378 ; U # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE +1D379..1D37F ; U # Cn [7] <reserved-1D379>..<reserved-1D37F> 1D400..1D454 ; R # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; R # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; R # Lu [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D @@ -2070,13 +2136,32 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1E01B..1E021 ; R # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; R # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; R # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E100..1E12C ; R # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W +1E130..1E136 ; R # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D +1E137..1E13D ; R # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER +1E140..1E149 ; R # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE +1E14E ; R # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E14F ; R # So NYIAKENG PUACHUE HMONG CIRCLED CA +1E2C0..1E2EB ; R # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E2EC..1E2EF ; R # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI +1E2F0..1E2F9 ; R # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE +1E2FF ; R # Sc WANCHO NGUN SIGN 1E800..1E8C4 ; R # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8C7..1E8CF ; R # No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE 1E8D0..1E8D6 ; R # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E900..1E943 ; R # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E944..1E94A ; R # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA +1E94B ; R # Lm ADLAM NASALIZATION MARK 1E950..1E959 ; R # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE 1E95E..1E95F ; R # Po [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK +1EC71..1ECAB ; R # No [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE +1ECAC ; R # So INDIC SIYAQ PLACEHOLDER +1ECAD..1ECAF ; R # No [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS +1ECB0 ; R # Sc INDIC SIYAQ RUPEE MARK +1ECB1..1ECB4 ; R # No [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK +1ED01..1ED2D ; R # No [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND +1ED2E ; R # So OTTOMAN SIYAQ MARRATAN +1ED2F..1ED3D ; R # No [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH 1EE00..1EE03 ; R # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; R # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; R # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM @@ -2125,10 +2210,8 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1F0F6..1F0FF ; U # Cn [10] <reserved-1F0F6>..<reserved-1F0FF> 1F100..1F10C ; U # No [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO 1F10D..1F10F ; U # Cn [3] <reserved-1F10D>..<reserved-1F10F> -1F110..1F12E ; U # So [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ -1F12F ; U # Cn <reserved-1F12F> -1F130..1F16B ; U # So [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN -1F16C..1F16F ; U # Cn [4] <reserved-1F16C>..<reserved-1F16F> +1F110..1F16C ; U # So [93] PARENTHESIZED LATIN CAPITAL LETTER A..RAISED MR SIGN +1F16D..1F16F ; U # Cn [3] <reserved-1F16D>..<reserved-1F16F> 1F170..1F1AC ; U # So [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD 1F1AD..1F1E5 ; U # Cn [57] <reserved-1F1AD>..<reserved-1F1E5> 1F1E6..1F1FF ; U # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z @@ -2148,35 +2231,48 @@ FFFC..FFFD ; U # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARA 1F400..1F5FF ; U # So [512] RAT..MOYAI 1F600..1F64F ; U # So [80] GRINNING FACE..PERSON WITH FOLDED HANDS 1F650..1F67F ; U # So [48] NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD -1F680..1F6D4 ; U # So [85] ROCKET..PAGODA -1F6D5..1F6DF ; U # Cn [11] <reserved-1F6D5>..<reserved-1F6DF> +1F680..1F6D5 ; U # So [86] ROCKET..HINDU TEMPLE +1F6D6..1F6DF ; U # Cn [10] <reserved-1F6D6>..<reserved-1F6DF> 1F6E0..1F6EC ; U # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6ED..1F6EF ; U # Cn [3] <reserved-1F6ED>..<reserved-1F6EF> -1F6F0..1F6F8 ; U # So [9] SATELLITE..FLYING SAUCER -1F6F9..1F6FF ; U # Cn [7] <reserved-1F6F9>..<reserved-1F6FF> +1F6F0..1F6FA ; U # So [11] SATELLITE..AUTO RICKSHAW +1F6FB..1F6FF ; U # Cn [5] <reserved-1F6FB>..<reserved-1F6FF> 1F700..1F773 ; U # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 1F774..1F77F ; U # Cn [12] <reserved-1F774>..<reserved-1F77F> -1F780..1F7D4 ; U # So [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR -1F7D5..1F7FF ; U # Cn [43] <reserved-1F7D5>..<reserved-1F7FF> +1F780..1F7D8 ; U # So [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE +1F7D9..1F7DF ; U # Cn [7] <reserved-1F7D9>..<reserved-1F7DF> +1F7E0..1F7EB ; U # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE +1F7EC..1F7FF ; U # Cn [20] <reserved-1F7EC>..<reserved-1F7FF> 1F800..1F80B ; R # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F810..1F847 ; R # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW 1F850..1F859 ; R # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; R # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; R # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS 1F900..1F90B ; U # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT -1F90C..1F90F ; U # Cn [4] <reserved-1F90C>..<reserved-1F90F> -1F910..1F93E ; U # So [47] ZIPPER-MOUTH FACE..HANDBALL -1F93F ; U # Cn <reserved-1F93F> -1F940..1F94C ; U # So [13] WILTED FLOWER..CURLING STONE -1F94D..1F94F ; U # Cn [3] <reserved-1F94D>..<reserved-1F94F> -1F950..1F96B ; U # So [28] CROISSANT..CANNED FOOD -1F96C..1F97F ; U # Cn [20] <reserved-1F96C>..<reserved-1F97F> -1F980..1F997 ; U # So [24] CRAB..CRICKET -1F998..1F9BF ; U # Cn [40] <reserved-1F998>..<reserved-1F9BF> -1F9C0 ; U # So CHEESE WEDGE -1F9C1..1F9CF ; U # Cn [15] <reserved-1F9C1>..<reserved-1F9CF> -1F9D0..1F9E6 ; U # So [23] FACE WITH MONOCLE..SOCKS -1F9E7..1F9FF ; U # Cn [25] <reserved-1F9E7>..<reserved-1F9FF> +1F90C ; U # Cn <reserved-1F90C> +1F90D..1F971 ; U # So [101] WHITE HEART..YAWNING FACE +1F972 ; U # Cn <reserved-1F972> +1F973..1F976 ; U # So [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE +1F977..1F979 ; U # Cn [3] <reserved-1F977>..<reserved-1F979> +1F97A..1F9A2 ; U # So [41] FACE WITH PLEADING EYES..SWAN +1F9A3..1F9A4 ; U # Cn [2] <reserved-1F9A3>..<reserved-1F9A4> +1F9A5..1F9AA ; U # So [6] SLOTH..OYSTER +1F9AB..1F9AD ; U # Cn [3] <reserved-1F9AB>..<reserved-1F9AD> +1F9AE..1F9CA ; U # So [29] GUIDE DOG..ICE CUBE +1F9CB..1F9CC ; U # Cn [2] <reserved-1F9CB>..<reserved-1F9CC> +1F9CD..1F9FF ; U # So [51] STANDING PERSON..NAZAR AMULET +1FA00..1FA53 ; U # So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP +1FA54..1FA5F ; U # Cn [12] <reserved-1FA54>..<reserved-1FA5F> +1FA60..1FA6D ; U # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER +1FA6E..1FA6F ; U # Cn [2] <reserved-1FA6E>..<reserved-1FA6F> +1FA70..1FA73 ; U # So [4] BALLET SHOES..SHORTS +1FA74..1FA77 ; U # Cn [4] <reserved-1FA74>..<reserved-1FA77> +1FA78..1FA7A ; U # So [3] DROP OF BLOOD..STETHOSCOPE +1FA7B..1FA7F ; U # Cn [5] <reserved-1FA7B>..<reserved-1FA7F> +1FA80..1FA82 ; U # So [3] YO-YO..PARACHUTE +1FA83..1FA8F ; U # Cn [13] <reserved-1FA83>..<reserved-1FA8F> +1FA90..1FA95 ; U # So [6] RINGED PLANET..BANJO +1FA96..1FA9F ; U # Cn [10] <reserved-1FA96>..<reserved-1FA9F> 20000..2A6D6 ; U # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A6D7..2A6FF ; U # Cn [41] <reserved-2A6D7>..<reserved-2A6FF> 2A700..2B734 ; U # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 diff --git a/gnu/usr.bin/perl/lib/unicore/uni_keywords.pl b/gnu/usr.bin/perl/lib/unicore/uni_keywords.pl new file mode 100644 index 00000000000..fba605d6970 --- /dev/null +++ b/gnu/usr.bin/perl/lib/unicore/uni_keywords.pl @@ -0,0 +1,1269 @@ +# -*- buffer-read-only: t -*- +# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! +# This file is built by regen/mk_invlists.pl from Unicode::UCD. +# Any changes made here will be lost! + +%utf8::uni_prop_ptrs_indices = ( + '_perl_any_folds' => 1154, + '_perl_charname_begin' => 1155, + '_perl_charname_continue' => 1156, + '_perl_folds_to_multi_char' => 1157, + '_perl_idcont' => 1158, + '_perl_idstart' => 1159, + '_perl_is_in_multi_char_fold' => 1160, + '_perl_nchar' => 1161, + '_perl_non_final_folds' => 1162, + '_perl_patws' => 1163, + '_perl_problematic_locale_foldeds_start' => 1164, + '_perl_problematic_locale_folds' => 1165, + '_perl_quotemeta' => 1166, + '_perl_surrogate' => 1167, + 'adlm' => 1, + 'aegeannumbers' => 2, + 'age=10' => 3, + 'age=11' => 4, + 'age=12' => 5, + 'age=12.1' => 6, + 'age=2' => 7, + 'age=2.1' => 8, + 'age=3' => 9, + 'age=3.1' => 10, + 'age=3.2' => 11, + 'age=4' => 12, + 'age=4.1' => 13, + 'age=5' => 14, + 'age=5.1' => 15, + 'age=5.2' => 16, + 'age=6' => 17, + 'age=6.1' => 18, + 'age=6.2' => 19, + 'age=6.3' => 20, + 'age=7' => 21, + 'age=8' => 22, + 'age=9' => 23, + 'age=na' => 24, + 'aghb' => 25, + 'ahex' => 940, + 'ahom' => 26, + 'alchemical' => 27, + 'all' => 28, + 'alnum' => 1129, + 'alpha' => 1130, + 'alphabetic' => 1130, + 'alphabeticpf' => 29, + 'ancientgreekmusic' => 30, + 'ancientgreeknumbers' => 31, + 'ancientsymbols' => 32, + 'any' => 33, + 'arab' => 34, + 'arabicexta' => 35, + 'arabicmath' => 36, + 'arabicpfa' => 37, + 'arabicpfb' => 38, + 'arabicsup' => 39, + 'armi' => 40, + 'armn' => 41, + 'arrows' => 42, + 'ascii' => 43, + 'asciihexdigit' => 940, + 'assigned' => 44, + 'avst' => 45, + 'bali' => 46, + 'bamu' => 47, + 'bamumsup' => 48, + 'basiclatin' => 43, + 'bass' => 49, + 'batk' => 50, + 'bc=al' => 51, + 'bc=an' => 52, + 'bc=b' => 53, + 'bc=bn' => 54, + 'bc=cs' => 55, + 'bc=en' => 56, + 'bc=es' => 57, + 'bc=et' => 58, + 'bc=fsi' => 59, + 'bc=l' => 60, + 'bc=lre' => 61, + 'bc=lri' => 62, + 'bc=lro' => 63, + 'bc=nsm' => 64, + 'bc=on' => 65, + 'bc=pdf' => 66, + 'bc=pdi' => 67, + 'bc=r' => 68, + 'bc=rle' => 69, + 'bc=rli' => 70, + 'bc=rlo' => 71, + 'bc=s' => 72, + 'bc=ws' => 73, + 'beng' => 74, + 'bhks' => 75, + 'bidic' => 76, + 'bidim' => 77, + 'blank' => 1131, + 'blockelements' => 78, + 'bopo' => 79, + 'bopomofoext' => 80, + 'boxdrawing' => 81, + 'bpt=c' => 82, + 'bpt=n' => 83, + 'bpt=o' => 84, + 'brah' => 85, + 'brai' => 86, + 'bugi' => 87, + 'buhd' => 88, + 'byzantinemusic' => 89, + 'c' => 90, + 'cakm' => 91, + 'cans' => 92, + 'cari' => 93, + 'cased' => 94, + 'casedletter' => 95, + 'cc' => 1132, + 'ccc=0' => 96, + 'ccc=1' => 97, + 'ccc=10' => 98, + 'ccc=103' => 99, + 'ccc=107' => 100, + 'ccc=11' => 101, + 'ccc=118' => 102, + 'ccc=12' => 103, + 'ccc=122' => 104, + 'ccc=129' => 105, + 'ccc=13' => 106, + 'ccc=130' => 107, + 'ccc=132' => 108, + 'ccc=14' => 109, + 'ccc=15' => 110, + 'ccc=16' => 111, + 'ccc=17' => 112, + 'ccc=18' => 113, + 'ccc=19' => 114, + 'ccc=20' => 115, + 'ccc=202' => 116, + 'ccc=21' => 117, + 'ccc=214' => 118, + 'ccc=216' => 119, + 'ccc=22' => 120, + 'ccc=23' => 121, + 'ccc=24' => 122, + 'ccc=25' => 123, + 'ccc=26' => 124, + 'ccc=27' => 125, + 'ccc=28' => 126, + 'ccc=29' => 127, + 'ccc=30' => 128, + 'ccc=31' => 129, + 'ccc=32' => 130, + 'ccc=33' => 131, + 'ccc=34' => 132, + 'ccc=35' => 133, + 'ccc=36' => 134, + 'ccc=7' => 135, + 'ccc=8' => 136, + 'ccc=84' => 137, + 'ccc=9' => 138, + 'ccc=91' => 139, + 'ccc=a' => 140, + 'ccc=al' => 141, + 'ccc=ar' => 142, + 'ccc=b' => 143, + 'ccc=bl' => 144, + 'ccc=br' => 145, + 'ccc=da' => 146, + 'ccc=db' => 147, + 'ccc=is' => 148, + 'ccc=l' => 149, + 'ccc=r' => 150, + 'ce' => 151, + 'cf' => 152, + 'cham' => 153, + 'cher' => 154, + 'cherokeesup' => 155, + 'chesssymbols' => 156, + 'ci' => 157, + 'cjk' => 158, + 'cjkcompat' => 159, + 'cjkcompatforms' => 160, + 'cjkcompatideographs' => 161, + 'cjkcompatideographssup' => 162, + 'cjkexta' => 163, + 'cjkextb' => 164, + 'cjkextc' => 165, + 'cjkextd' => 166, + 'cjkexte' => 167, + 'cjkextf' => 168, + 'cjkradicalssup' => 169, + 'cjkstrokes' => 170, + 'cjksymbols' => 171, + 'cn' => 172, + 'cntrl' => 1132, + 'co' => 173, + 'compatjamo' => 174, + 'compex' => 175, + 'control' => 1132, + 'controlpictures' => 176, + 'copt' => 177, + 'copticepactnumbers' => 178, + 'countingrod' => 179, + 'cprt' => 180, + 'cuneiformnumbers' => 181, + 'currencysymbols' => 182, + 'cwcf' => 183, + 'cwcm' => 184, + 'cwkcf' => 185, + 'cwl' => 186, + 'cwt' => 187, + 'cwu' => 188, + 'cypriotsyllabary' => 189, + 'cyrillicexta' => 190, + 'cyrillicextb' => 191, + 'cyrillicextc' => 192, + 'cyrillicsup' => 193, + 'cyrl' => 194, + 'dash' => 195, + 'decimalnumber' => 1133, + 'dep' => 196, + 'deva' => 197, + 'devanagariext' => 198, + 'di' => 199, + 'dia' => 200, + 'diacriticals' => 201, + 'diacriticalsext' => 202, + 'diacriticalsforsymbols' => 203, + 'diacriticalssup' => 204, + 'digit' => 1133, + 'dingbats' => 205, + 'dogr' => 206, + 'domino' => 207, + 'dsrt' => 208, + 'dt=can' => 209, + 'dt=com' => 210, + 'dt=enc' => 211, + 'dt=fin' => 212, + 'dt=font' => 213, + 'dt=fra' => 214, + 'dt=init' => 215, + 'dt=iso' => 216, + 'dt=med' => 217, + 'dt=nar' => 218, + 'dt=nb' => 219, + 'dt=noncanon' => 220, + 'dt=none' => 221, + 'dt=sml' => 222, + 'dt=sqr' => 223, + 'dt=sub' => 224, + 'dt=sup' => 225, + 'dt=vert' => 226, + 'dupl' => 227, + 'ea=a' => 229, + 'ea=f' => 230, + 'ea=h' => 231, + 'ea=n' => 232, + 'ea=na' => 233, + 'ea=w' => 234, + 'earlydynasticcuneiform' => 228, + 'egyp' => 235, + 'egyptianhieroglyphformatcontrols' => 236, + 'elba' => 237, + 'elym' => 238, + 'emoticons' => 239, + 'enclosedalphanum' => 240, + 'enclosedalphanumsup' => 241, + 'enclosedcjk' => 242, + 'enclosedideographicsup' => 243, + 'ethi' => 244, + 'ethiopicext' => 245, + 'ethiopicexta' => 246, + 'ethiopicsup' => 247, + 'ext' => 248, + 'gcb=cn' => 249, + 'gcb=ex' => 250, + 'gcb=l' => 251, + 'gcb=pp' => 252, + 'gcb=sm' => 253, + 'gcb=t' => 254, + 'gcb=v' => 255, + 'gcb=xx' => 256, + 'geometricshapes' => 257, + 'geometricshapesext' => 258, + 'geor' => 259, + 'georgianext' => 260, + 'georgiansup' => 261, + 'glag' => 262, + 'glagoliticsup' => 263, + 'gong' => 264, + 'gonm' => 265, + 'goth' => 266, + 'gran' => 267, + 'graph' => 1134, + 'grbase' => 268, + 'greekext' => 269, + 'grek' => 270, + 'grext' => 271, + 'gujr' => 272, + 'guru' => 273, + 'halfandfullforms' => 274, + 'halfmarks' => 275, + 'han' => 276, + 'hang' => 277, + 'hano' => 278, + 'hatr' => 279, + 'hebr' => 280, + 'hex' => 1141, + 'hexdigit' => 1141, + 'highpusurrogates' => 281, + 'highsurrogates' => 282, + 'hira' => 283, + 'hluw' => 284, + 'hmng' => 285, + 'hmnp' => 286, + 'horizspace' => 1131, + 'hst=na' => 287, + 'hung' => 288, + 'hyphen_perl_aux' => 289, + 'idc' => 290, + 'ideo' => 291, + 'ideographicsymbols' => 292, + 'ids' => 293, + 'idsb' => 294, + 'idst' => 295, + 'in=1.1' => 487, + 'in=10' => 483, + 'in=11' => 484, + 'in=12' => 485, + 'in=12.1' => 486, + 'in=2' => 488, + 'in=2.1' => 489, + 'in=3' => 490, + 'in=3.1' => 491, + 'in=3.2' => 492, + 'in=4' => 493, + 'in=4.1' => 494, + 'in=5' => 495, + 'in=5.1' => 496, + 'in=5.2' => 497, + 'in=6' => 498, + 'in=6.1' => 499, + 'in=6.2' => 500, + 'in=6.3' => 501, + 'in=7' => 502, + 'in=8' => 503, + 'in=9' => 504, + 'inadlam' => 296, + 'inahom' => 297, + 'inanatolianhieroglyphs' => 298, + 'inarabic' => 299, + 'inarmenian' => 300, + 'inavestan' => 301, + 'inbalinese' => 302, + 'inbamum' => 303, + 'inbassavah' => 304, + 'inbatak' => 305, + 'inbengali' => 306, + 'inbhaiksuki' => 307, + 'inbopomofo' => 308, + 'inbrahmi' => 309, + 'inbuginese' => 310, + 'inbuhid' => 311, + 'incarian' => 312, + 'incaucasianalbanian' => 313, + 'inchakma' => 314, + 'incham' => 315, + 'incherokee' => 316, + 'incoptic' => 317, + 'incuneiform' => 318, + 'incyrillic' => 319, + 'indevanagari' => 320, + 'indicnumberforms' => 321, + 'indicsiyaqnumbers' => 322, + 'indogra' => 323, + 'induployan' => 324, + 'inegyptianhieroglyphs' => 325, + 'inelbasan' => 326, + 'inelymaic' => 327, + 'inethiopic' => 328, + 'ingeorgian' => 329, + 'inglagolitic' => 330, + 'ingothic' => 331, + 'ingrantha' => 332, + 'ingreek' => 333, + 'ingujarati' => 334, + 'ingunjalagondi' => 335, + 'ingurmukhi' => 336, + 'inhangul' => 337, + 'inhanifirohingya' => 338, + 'inhanunoo' => 339, + 'inhatran' => 340, + 'inhebrew' => 341, + 'inhiragana' => 342, + 'inidc' => 343, + 'inimperialaramaic' => 344, + 'ininscriptionalpahlavi' => 345, + 'ininscriptionalparthian' => 346, + 'injavanese' => 347, + 'inkaithi' => 348, + 'inkannada' => 349, + 'inkatakana' => 350, + 'inkharoshthi' => 351, + 'inkhmer' => 352, + 'inkhojki' => 353, + 'inkhudawadi' => 354, + 'inlao' => 355, + 'inlepcha' => 356, + 'inlimbu' => 357, + 'inlineara' => 358, + 'inlycian' => 359, + 'inlydian' => 360, + 'inmahajani' => 361, + 'inmakasar' => 362, + 'inmalayalam' => 363, + 'inmandaic' => 364, + 'inmanichaean' => 365, + 'inmarchen' => 366, + 'inmasaramgondi' => 367, + 'inmedefaidrin' => 368, + 'inmeeteimayek' => 369, + 'inmendekikakui' => 370, + 'inmeroiticcursive' => 371, + 'inmiao' => 372, + 'inmodi' => 373, + 'inmongolian' => 374, + 'inmro' => 375, + 'inmultani' => 376, + 'inmyanmar' => 377, + 'innabataean' => 378, + 'innandinagari' => 379, + 'innewa' => 380, + 'innewtailue' => 381, + 'innko' => 382, + 'innushu' => 383, + 'innyiakengpuachuehmong' => 384, + 'inogham' => 385, + 'inoldhungarian' => 386, + 'inolditalic' => 387, + 'inoldpermic' => 388, + 'inoldpersian' => 389, + 'inoldsogdian' => 390, + 'inoldturkic' => 391, + 'inoriya' => 392, + 'inosage' => 393, + 'inosmanya' => 394, + 'inpahawhhmong' => 395, + 'inpaucinhau' => 396, + 'inpc=bottom' => 397, + 'inpc=bottomandleft' => 398, + 'inpc=bottomandright' => 399, + 'inpc=left' => 400, + 'inpc=leftandright' => 401, + 'inpc=na' => 402, + 'inpc=overstruck' => 403, + 'inpc=right' => 404, + 'inpc=top' => 405, + 'inpc=topandbottom' => 406, + 'inpc=topandbottomandright' => 407, + 'inpc=topandleft' => 408, + 'inpc=topandleftandright' => 409, + 'inpc=topandright' => 410, + 'inphagspa' => 411, + 'inphoenician' => 412, + 'inpsalterpahlavi' => 413, + 'inpunctuation' => 414, + 'inrejang' => 415, + 'inrunic' => 416, + 'insamaritan' => 417, + 'insaurashtra' => 418, + 'insc=avagraha' => 419, + 'insc=bindu' => 420, + 'insc=brahmijoiningnumber' => 421, + 'insc=cantillationmark' => 422, + 'insc=consonant' => 423, + 'insc=consonantdead' => 424, + 'insc=consonantfinal' => 425, + 'insc=consonantheadletter' => 426, + 'insc=consonantinitialpostfixed' => 427, + 'insc=consonantkiller' => 428, + 'insc=consonantmedial' => 429, + 'insc=consonantplaceholder' => 430, + 'insc=consonantprecedingrepha' => 431, + 'insc=consonantprefixed' => 432, + 'insc=consonantsubjoined' => 433, + 'insc=consonantsucceedingrepha' => 434, + 'insc=consonantwithstacker' => 435, + 'insc=geminationmark' => 436, + 'insc=invisiblestacker' => 437, + 'insc=modifyingletter' => 438, + 'insc=nonjoiner' => 439, + 'insc=nukta' => 440, + 'insc=number' => 441, + 'insc=numberjoiner' => 442, + 'insc=other' => 443, + 'insc=purekiller' => 444, + 'insc=registershifter' => 445, + 'insc=syllablemodifier' => 446, + 'insc=toneletter' => 447, + 'insc=tonemark' => 448, + 'insc=virama' => 449, + 'insc=visarga' => 450, + 'insc=vowel' => 451, + 'insc=voweldependent' => 452, + 'insc=vowelindependent' => 453, + 'insharada' => 454, + 'insiddham' => 455, + 'insinhala' => 456, + 'insogdian' => 457, + 'insorasompeng' => 458, + 'insoyombo' => 459, + 'insundanese' => 460, + 'insylotinagri' => 461, + 'insyriac' => 462, + 'intagalog' => 463, + 'intagbanwa' => 464, + 'intaile' => 465, + 'intaitham' => 466, + 'intaiviet' => 467, + 'intakri' => 468, + 'intamil' => 469, + 'intangut' => 470, + 'intelugu' => 471, + 'inthaana' => 472, + 'inthai' => 473, + 'intibetan' => 474, + 'intifinagh' => 475, + 'intirhuta' => 476, + 'inugaritic' => 477, + 'invai' => 478, + 'invs' => 479, + 'inwancho' => 480, + 'inwarangciti' => 481, + 'inzanabazarsquare' => 482, + 'ipaext' => 505, + 'ital' => 506, + 'jamo' => 507, + 'jamoexta' => 508, + 'jamoextb' => 509, + 'java' => 510, + 'jg=africanfeh' => 511, + 'jg=africannoon' => 512, + 'jg=africanqaf' => 513, + 'jg=ain' => 514, + 'jg=alaph' => 515, + 'jg=alef' => 516, + 'jg=beh' => 517, + 'jg=beth' => 518, + 'jg=burushaskiyehbarree' => 519, + 'jg=dal' => 520, + 'jg=dalathrish' => 521, + 'jg=e' => 522, + 'jg=farsiyeh' => 523, + 'jg=fe' => 524, + 'jg=feh' => 525, + 'jg=finalsemkath' => 526, + 'jg=gaf' => 527, + 'jg=gamal' => 528, + 'jg=hah' => 529, + 'jg=hamzaonhehgoal' => 530, + 'jg=hanifirohingyakinnaya' => 531, + 'jg=hanifirohingyapa' => 532, + 'jg=he' => 533, + 'jg=heh' => 534, + 'jg=hehgoal' => 535, + 'jg=heth' => 536, + 'jg=kaf' => 537, + 'jg=kaph' => 538, + 'jg=khaph' => 539, + 'jg=knottedheh' => 540, + 'jg=lam' => 541, + 'jg=lamadh' => 542, + 'jg=malayalambha' => 543, + 'jg=malayalamja' => 544, + 'jg=malayalamlla' => 545, + 'jg=malayalamllla' => 546, + 'jg=malayalamnga' => 547, + 'jg=malayalamnna' => 548, + 'jg=malayalamnnna' => 549, + 'jg=malayalamnya' => 550, + 'jg=malayalamra' => 551, + 'jg=malayalamssa' => 552, + 'jg=malayalamtta' => 553, + 'jg=manichaeanaleph' => 554, + 'jg=manichaeanayin' => 555, + 'jg=manichaeanbeth' => 556, + 'jg=manichaeandaleth' => 557, + 'jg=manichaeandhamedh' => 558, + 'jg=manichaeanfive' => 559, + 'jg=manichaeangimel' => 560, + 'jg=manichaeanheth' => 561, + 'jg=manichaeanhundred' => 562, + 'jg=manichaeankaph' => 563, + 'jg=manichaeanlamedh' => 564, + 'jg=manichaeanmem' => 565, + 'jg=manichaeannun' => 566, + 'jg=manichaeanone' => 567, + 'jg=manichaeanpe' => 568, + 'jg=manichaeanqoph' => 569, + 'jg=manichaeanresh' => 570, + 'jg=manichaeansadhe' => 571, + 'jg=manichaeansamekh' => 572, + 'jg=manichaeantaw' => 573, + 'jg=manichaeanten' => 574, + 'jg=manichaeanteth' => 575, + 'jg=manichaeanthamedh' => 576, + 'jg=manichaeantwenty' => 577, + 'jg=manichaeanwaw' => 578, + 'jg=manichaeanyodh' => 579, + 'jg=manichaeanzayin' => 580, + 'jg=meem' => 581, + 'jg=mim' => 582, + 'jg=nojoininggroup' => 583, + 'jg=noon' => 584, + 'jg=nun' => 585, + 'jg=nya' => 586, + 'jg=pe' => 587, + 'jg=qaf' => 588, + 'jg=qaph' => 589, + 'jg=reh' => 590, + 'jg=reversedpe' => 591, + 'jg=rohingyayeh' => 592, + 'jg=sad' => 593, + 'jg=sadhe' => 594, + 'jg=seen' => 595, + 'jg=semkath' => 596, + 'jg=shin' => 597, + 'jg=straightwaw' => 598, + 'jg=swashkaf' => 599, + 'jg=syriacwaw' => 600, + 'jg=tah' => 601, + 'jg=taw' => 602, + 'jg=tehmarbuta' => 603, + 'jg=teth' => 604, + 'jg=waw' => 605, + 'jg=yeh' => 606, + 'jg=yehbarree' => 607, + 'jg=yehwithtail' => 608, + 'jg=yudh' => 609, + 'jg=yudhhe' => 610, + 'jg=zain' => 611, + 'jg=zhain' => 612, + 'joinc' => 613, + 'jt=c' => 614, + 'jt=d' => 615, + 'jt=l' => 616, + 'jt=r' => 617, + 'jt=t' => 618, + 'jt=u' => 619, + 'kali' => 620, + 'kana' => 621, + 'kanaexta' => 622, + 'kanasup' => 623, + 'kanbun' => 624, + 'kangxi' => 625, + 'katakanaext' => 626, + 'khar' => 627, + 'khmersymbols' => 628, + 'khmr' => 629, + 'khoj' => 630, + 'knda' => 631, + 'kthi' => 632, + 'l' => 633, + 'l_' => 95, + 'l_amp_' => 95, + 'lana' => 634, + 'lao' => 635, + 'latin1' => 636, + 'latinexta' => 637, + 'latinextadditional' => 638, + 'latinextb' => 639, + 'latinextc' => 640, + 'latinextd' => 641, + 'latinexte' => 642, + 'latn' => 643, + 'lb=ai' => 644, + 'lb=al' => 645, + 'lb=b2' => 646, + 'lb=ba' => 647, + 'lb=bb' => 648, + 'lb=bk' => 649, + 'lb=cb' => 650, + 'lb=cj' => 651, + 'lb=cl' => 652, + 'lb=cm' => 653, + 'lb=cp' => 654, + 'lb=cr' => 655, + 'lb=eb' => 656, + 'lb=em' => 657, + 'lb=ex' => 658, + 'lb=gl' => 659, + 'lb=h2' => 660, + 'lb=h3' => 661, + 'lb=hl' => 662, + 'lb=hy' => 663, + 'lb=id' => 664, + 'lb=in' => 665, + 'lb=is' => 666, + 'lb=lf' => 667, + 'lb=nl' => 668, + 'lb=ns' => 669, + 'lb=nu' => 670, + 'lb=op' => 671, + 'lb=po' => 672, + 'lb=pr' => 673, + 'lb=qu' => 674, + 'lb=sa' => 675, + 'lb=sg_perl_aux' => 676, + 'lb=sp' => 677, + 'lb=sy' => 678, + 'lb=wj' => 679, + 'lb=xx' => 680, + 'lb=zw' => 681, + 'lb=zwj' => 682, + 'lc' => 95, + 'lepc' => 683, + 'letterlikesymbols' => 684, + 'limb' => 685, + 'lina' => 686, + 'linb' => 687, + 'linearbideograms' => 688, + 'linearbsyllabary' => 689, + 'lisu' => 690, + 'll' => 694, + 'lm' => 691, + 'lo' => 692, + 'loe' => 693, + 'lower' => 1135, + 'lowercase' => 1135, + 'lowercaseletter' => 694, + 'lowsurrogates' => 695, + 'lt' => 1092, + 'lu' => 1098, + 'lyci' => 696, + 'lydi' => 697, + 'm' => 698, + 'mahj' => 699, + 'mahjong' => 700, + 'maka' => 701, + 'mand' => 702, + 'mani' => 703, + 'marc' => 704, + 'math' => 705, + 'mathalphanum' => 706, + 'mathoperators' => 707, + 'mayannumerals' => 708, + 'mc' => 709, + 'me' => 710, + 'medf' => 711, + 'meeteimayekext' => 712, + 'mend' => 713, + 'merc' => 714, + 'mero' => 715, + 'miao' => 716, + 'miscarrows' => 717, + 'miscmathsymbolsa' => 718, + 'miscmathsymbolsb' => 719, + 'miscpictographs' => 720, + 'miscsymbols' => 721, + 'misctechnical' => 722, + 'mlym' => 723, + 'mn' => 724, + 'modi' => 725, + 'modifierletters' => 726, + 'modifiertoneletters' => 727, + 'mong' => 728, + 'mongoliansup' => 729, + 'mro' => 730, + 'mtei' => 731, + 'mult' => 732, + 'music' => 733, + 'myanmarexta' => 734, + 'myanmarextb' => 735, + 'mymr' => 736, + 'n' => 737, + 'nand' => 738, + 'narb' => 739, + 'nb' => 740, + 'nbat' => 741, + 'nd' => 1133, + 'newa' => 742, + 'nfcqc=m' => 743, + 'nfcqc=y' => 744, + 'nfdqc=y' => 745, + 'nfkcqc=n' => 746, + 'nfkcqc=y' => 747, + 'nfkdqc=n' => 748, + 'nko' => 749, + 'nl' => 750, + 'no' => 751, + 'nshu' => 752, + 'nt=di' => 753, + 'nt=nu' => 754, + 'numberforms' => 755, + 'nv=0' => 756, + 'nv=1' => 757, + 'nv=1/10' => 782, + 'nv=1/12' => 783, + 'nv=1/16' => 784, + 'nv=1/160' => 785, + 'nv=1/2' => 786, + 'nv=1/20' => 787, + 'nv=1/3' => 788, + 'nv=1/32' => 789, + 'nv=1/320' => 790, + 'nv=1/4' => 791, + 'nv=1/40' => 792, + 'nv=1/5' => 793, + 'nv=1/6' => 794, + 'nv=1/64' => 795, + 'nv=1/7' => 796, + 'nv=1/8' => 797, + 'nv=1/80' => 798, + 'nv=1/9' => 799, + 'nv=10' => 758, + 'nv=100' => 759, + 'nv=1000' => 760, + 'nv=10000' => 761, + 'nv=100000' => 762, + 'nv=1000000' => 763, + 'nv=10000000' => 764, + 'nv=100000000' => 765, + 'nv=10000000000' => 766, + 'nv=1000000000000' => 767, + 'nv=11' => 768, + 'nv=11/12' => 769, + 'nv=11/2' => 770, + 'nv=12' => 771, + 'nv=13' => 772, + 'nv=13/2' => 773, + 'nv=14' => 774, + 'nv=15' => 775, + 'nv=15/2' => 776, + 'nv=16' => 777, + 'nv=17' => 778, + 'nv=17/2' => 779, + 'nv=18' => 780, + 'nv=19' => 781, + 'nv=2' => 800, + 'nv=2/3' => 817, + 'nv=2/5' => 818, + 'nv=20' => 801, + 'nv=200' => 802, + 'nv=2000' => 803, + 'nv=20000' => 804, + 'nv=200000' => 805, + 'nv=20000000' => 806, + 'nv=21' => 807, + 'nv=216000' => 808, + 'nv=22' => 809, + 'nv=23' => 810, + 'nv=24' => 811, + 'nv=25' => 812, + 'nv=26' => 813, + 'nv=27' => 814, + 'nv=28' => 815, + 'nv=29' => 816, + 'nv=3' => 819, + 'nv=3/16' => 834, + 'nv=3/2' => 835, + 'nv=3/20' => 836, + 'nv=3/4' => 837, + 'nv=3/5' => 838, + 'nv=3/64' => 839, + 'nv=3/8' => 840, + 'nv=3/80' => 841, + 'nv=30' => 820, + 'nv=300' => 821, + 'nv=3000' => 822, + 'nv=30000' => 823, + 'nv=300000' => 824, + 'nv=31' => 825, + 'nv=32' => 826, + 'nv=33' => 827, + 'nv=34' => 828, + 'nv=35' => 829, + 'nv=36' => 830, + 'nv=37' => 831, + 'nv=38' => 832, + 'nv=39' => 833, + 'nv=4' => 842, + 'nv=4/5' => 858, + 'nv=40' => 843, + 'nv=400' => 844, + 'nv=4000' => 845, + 'nv=40000' => 846, + 'nv=400000' => 847, + 'nv=41' => 848, + 'nv=42' => 849, + 'nv=43' => 850, + 'nv=432000' => 851, + 'nv=44' => 852, + 'nv=45' => 853, + 'nv=46' => 854, + 'nv=47' => 855, + 'nv=48' => 856, + 'nv=49' => 857, + 'nv=5' => 859, + 'nv=5/12' => 865, + 'nv=5/2' => 866, + 'nv=5/6' => 867, + 'nv=5/8' => 868, + 'nv=50' => 860, + 'nv=500' => 861, + 'nv=5000' => 862, + 'nv=50000' => 863, + 'nv=500000' => 864, + 'nv=6' => 869, + 'nv=60' => 870, + 'nv=600' => 871, + 'nv=6000' => 872, + 'nv=60000' => 873, + 'nv=600000' => 874, + 'nv=7' => 875, + 'nv=7/12' => 881, + 'nv=7/2' => 882, + 'nv=7/8' => 883, + 'nv=70' => 876, + 'nv=700' => 877, + 'nv=7000' => 878, + 'nv=70000' => 879, + 'nv=700000' => 880, + 'nv=8' => 884, + 'nv=80' => 885, + 'nv=800' => 886, + 'nv=8000' => 887, + 'nv=80000' => 888, + 'nv=800000' => 889, + 'nv=9' => 890, + 'nv=9/2' => 896, + 'nv=90' => 891, + 'nv=900' => 892, + 'nv=9000' => 893, + 'nv=90000' => 894, + 'nv=900000' => 895, + 'nv=_minus_1/2' => 898, + 'nv=nan' => 897, + 'ocr' => 899, + 'ogam' => 900, + 'olck' => 901, + 'orkh' => 902, + 'ornamentaldingbats' => 903, + 'orya' => 904, + 'osge' => 905, + 'osma' => 906, + 'ottomansiyaqnumbers' => 907, + 'p' => 908, + 'palm' => 909, + 'patsyn' => 910, + 'pauc' => 911, + 'pc' => 912, + 'pcm' => 913, + 'pd' => 914, + 'pe' => 915, + 'perlspace' => 937, + 'perlword' => 939, + 'perm' => 916, + 'pf' => 917, + 'phag' => 918, + 'phaistos' => 919, + 'phli' => 920, + 'phlp' => 921, + 'phnx' => 922, + 'phoneticext' => 923, + 'phoneticextsup' => 924, + 'pi' => 925, + 'playingcards' => 926, + 'po' => 927, + 'posixalnum' => 928, + 'posixalpha' => 929, + 'posixblank' => 930, + 'posixcntrl' => 931, + 'posixdigit' => 932, + 'posixgraph' => 933, + 'posixlower' => 934, + 'posixprint' => 935, + 'posixpunct' => 936, + 'posixspace' => 937, + 'posixupper' => 938, + 'posixword' => 939, + 'posixxdigit' => 940, + 'print' => 1136, + 'prti' => 941, + 'ps' => 942, + 'pua' => 943, + 'qaai' => 944, + 'qmark' => 945, + 'radical' => 946, + 'ri' => 947, + 'rjng' => 948, + 'rohg' => 949, + 'rumi' => 950, + 'runr' => 951, + 's' => 952, + 'samr' => 953, + 'sarb' => 954, + 'saur' => 955, + 'sb=at' => 956, + 'sb=cl' => 957, + 'sb=ex' => 958, + 'sb=fo' => 959, + 'sb=le' => 960, + 'sb=lo' => 961, + 'sb=nu' => 962, + 'sb=sc' => 963, + 'sb=se' => 964, + 'sb=sp' => 965, + 'sb=st' => 966, + 'sb=up' => 967, + 'sb=xx' => 968, + 'sc' => 969, + 'sc=adlm' => 970, + 'sc=arab' => 971, + 'sc=armn' => 972, + 'sc=beng' => 973, + 'sc=bopo' => 974, + 'sc=bugi' => 975, + 'sc=buhd' => 976, + 'sc=cakm' => 977, + 'sc=copt' => 978, + 'sc=cprt' => 979, + 'sc=cyrl' => 980, + 'sc=deva' => 981, + 'sc=dogr' => 982, + 'sc=dupl' => 983, + 'sc=geor' => 984, + 'sc=glag' => 985, + 'sc=gong' => 986, + 'sc=gonm' => 987, + 'sc=gran' => 988, + 'sc=grek' => 989, + 'sc=gujr' => 990, + 'sc=guru' => 991, + 'sc=han' => 992, + 'sc=hang' => 993, + 'sc=hano' => 994, + 'sc=hira' => 995, + 'sc=java' => 996, + 'sc=kali' => 997, + 'sc=kana' => 998, + 'sc=khoj' => 999, + 'sc=knda' => 1000, + 'sc=kthi' => 1001, + 'sc=latn' => 1002, + 'sc=limb' => 1003, + 'sc=lina' => 1004, + 'sc=linb' => 1005, + 'sc=mahj' => 1006, + 'sc=mand' => 1007, + 'sc=mani' => 1008, + 'sc=mlym' => 1009, + 'sc=modi' => 1010, + 'sc=mong' => 1011, + 'sc=mult' => 1012, + 'sc=mymr' => 1013, + 'sc=nand' => 1014, + 'sc=orya' => 1015, + 'sc=perm' => 1016, + 'sc=phag' => 1017, + 'sc=phlp' => 1018, + 'sc=qaai' => 1019, + 'sc=rohg' => 1020, + 'sc=shrd' => 1021, + 'sc=sind' => 1022, + 'sc=sinh' => 1023, + 'sc=sogd' => 1024, + 'sc=sylo' => 1025, + 'sc=syrc' => 1026, + 'sc=tagb' => 1027, + 'sc=takr' => 1028, + 'sc=tale' => 1029, + 'sc=taml' => 1030, + 'sc=telu' => 1031, + 'sc=tglg' => 1032, + 'sc=thaa' => 1033, + 'sc=tirh' => 1034, + 'sc=yi' => 1035, + 'sc=zyyy' => 1036, + 'sd' => 1037, + 'sgnw' => 1038, + 'shaw' => 1039, + 'shorthandformatcontrols' => 1040, + 'shrd' => 1041, + 'sidd' => 1042, + 'sind' => 1043, + 'sinh' => 1044, + 'sinhalaarchaicnumbers' => 1045, + 'sk' => 1046, + 'sm' => 1047, + 'smallforms' => 1048, + 'smallkanaext' => 1049, + 'so' => 1050, + 'sogd' => 1051, + 'sogo' => 1052, + 'sora' => 1053, + 'soyo' => 1054, + 'space' => 1138, + 'spaceperl' => 1138, + 'specials' => 1055, + 'sterm' => 1056, + 'sund' => 1057, + 'sundanesesup' => 1058, + 'suparrowsa' => 1059, + 'suparrowsb' => 1060, + 'suparrowsc' => 1061, + 'superandsub' => 1062, + 'supmathoperators' => 1063, + 'suppuaa' => 1064, + 'suppuab' => 1065, + 'suppunctuation' => 1066, + 'supsymbolsandpictographs' => 1067, + 'suttonsignwriting' => 1068, + 'sylo' => 1069, + 'symbolsandpictographsexta' => 1070, + 'syrc' => 1071, + 'syriacsup' => 1072, + 'tagb' => 1073, + 'tags' => 1074, + 'taixuanjing' => 1075, + 'takr' => 1076, + 'tale' => 1077, + 'talu' => 1078, + 'tamilsup' => 1079, + 'taml' => 1080, + 'tang' => 1081, + 'tangutcomponents' => 1082, + 'tavt' => 1083, + 'telu' => 1084, + 'term' => 1085, + 'tfng' => 1086, + 'tglg' => 1087, + 'thaa' => 1088, + 'thai' => 1089, + 'tibt' => 1090, + 'tirh' => 1091, + 'title' => 1092, + 'titlecase' => 1092, + 'titlecaseletter' => 1092, + 'transportandmap' => 1093, + 'ucas' => 1094, + 'ucasext' => 1095, + 'ugar' => 1096, + 'uideo' => 1097, + 'upper' => 1139, + 'uppercase' => 1139, + 'uppercaseletter' => 1098, + 'vai' => 1099, + 'vedicext' => 1100, + 'verticalforms' => 1101, + 'vertspace' => 1102, + 'vo=r' => 1103, + 'vo=tr' => 1104, + 'vo=tu' => 1105, + 'vo=u' => 1106, + 'vs' => 1107, + 'vssup' => 1108, + 'wara' => 1109, + 'wb=dq' => 1110, + 'wb=eb' => 1111, + 'wb=ex' => 1112, + 'wb=extend' => 1113, + 'wb=fo' => 1114, + 'wb=ka' => 1115, + 'wb=le' => 1116, + 'wb=mb' => 1117, + 'wb=ml' => 1118, + 'wb=mn' => 1119, + 'wb=nl' => 1120, + 'wb=nu' => 1121, + 'wb=sq' => 1122, + 'wb=wsegspace' => 1123, + 'wb=xx' => 1124, + 'wcho' => 1125, + 'whitespace' => 1138, + 'word' => 1140, + 'wspace' => 1138, + 'xdigit' => 1141, + 'xidc' => 1126, + 'xids' => 1127, + 'xpeo' => 1128, + 'xperlspace' => 1138, + 'xposixalnum' => 1129, + 'xposixalpha' => 1130, + 'xposixblank' => 1131, + 'xposixcntrl' => 1132, + 'xposixdigit' => 1133, + 'xposixgraph' => 1134, + 'xposixlower' => 1135, + 'xposixprint' => 1136, + 'xposixpunct' => 1137, + 'xposixspace' => 1138, + 'xposixupper' => 1139, + 'xposixword' => 1140, + 'xposixxdigit' => 1141, + 'xsux' => 1142, + 'yi' => 1143, + 'yijing' => 1144, + 'yiradicals' => 1145, + 'yisyllables' => 1146, + 'z' => 1147, + 'zanb' => 1148, + 'zl' => 1149, + 'zp' => 1150, + 'zs' => 1151, + 'zyyy' => 1152, + 'zzzz' => 1153, +); + +1; + +# Generated from: +# d34c77b7e7a94986cc82056919f4ffc1503b73091561e16bd8ef145ac0fd04c5 lib/Unicode/UCD.pm +# 5e91b649379ec79af7cfb6b09410a24557cba4c6d733cd0a2b8a78a1448736d2 lib/unicore/ArabicShaping.txt +# f5feb19cd084b2b1568fbc0f94f4b4b54941406e7fb36c7570f8352fd5022dbe lib/unicore/BidiBrackets.txt +# e6cbd8ffe94f2e0fbfa6695d6c06c1e72eef7d3aa93cb6329d111285198b5e62 lib/unicore/BidiMirroring.txt +# a28b205afe8625fffdb6544a5fe14cf02b91493d9900f07820fa2102a17548f7 lib/unicore/Blocks.txt +# 9c772627c6ee77eea6a17b42927b8ee28ca05dc65d6a511062104baaf3d12294 lib/unicore/CaseFolding.txt +# abc8394c5bde62453118b00c1c5842160a04d7fffb2e829ee5426b846596d081 lib/unicore/CompositionExclusions.txt +# 2fc081011d8fabaf7cf4937732dd5a6d6a57e492c43f3adfeded513387ee0ec3 lib/unicore/DAge.txt +# a6eb7a8671fb532fbd88c37fd7b20b5b2e7dbfc8b121f74c14abe2947db0da68 lib/unicore/DCoreProperties.txt +# 92dcdda84142194a1596f22180fcdf8c0e7f86897f09cc9203c7dc636c549f5f lib/unicore/DNormalizationProps.txt +# 904500178b2e752635bef27aaed3a2a3718a100bce35ff96b3890be7a8315d8f lib/unicore/EastAsianWidth.txt +# 1989b03d93023d8f5cc33eebf0d2ea80c8bd8f8c97843059ea039acb582c2078 lib/unicore/EmojiData.txt +# d7930c2a7318e66b4ba756d5e5b41fbc586c2ad43d450ae9d320a758510bae2e lib/unicore/EquivalentUnifiedIdeograph.txt +# 8606af08712a8c18fe268d418e2e5a87eddee6e190cce4c2d5a76b4fadf035e8 lib/unicore/HangulSyllableType.txt +# 49a1bf18b048454154881f6a8a605b5e2fc73e85fcc4df1cb26d52e8c2aeb9bf lib/unicore/IndicPositionalCategory.txt +# 1b6f3ef6e00e5b2e2a93d2d3c954ca1cce368599c5f11874cd0f0ce222d4637b lib/unicore/IndicSyllabicCategory.txt +# 285c5c1ae458bc3ccd6a1398a94d2d67ce6bc1d7fc0f098762836050345e9434 lib/unicore/Jamo.txt +# 961f842fc70b5afd1d82c6645e68c10d1f701382aed38ae38cb2ff27f671903c lib/unicore/LineBreak.txt +# ff61a0687d2f32c0dd1094254b8bde967883b43c2d4d50fd17531d498e41ab2c lib/unicore/NameAliases.txt +# d3eb9a288ebeaf9de1237989f490705e287b6f610b59d2459fb1b7c2d8e39c39 lib/unicore/NamedSequences.txt +# d30d3ee430cf3527449d024954f053e419fa4aa2246eb59e5cd8d621af0c4b3f lib/unicore/PropList.txt +# efce54f7c715a332c19b3d14c6a0eea30c6cde91caf6ff0d21c755be933736f4 lib/unicore/PropValueAliases.txt +# d3cc3f9f0b6a8f0b7ef1d6ef202675426c28f4a75de01fc69ed977a93a00982b lib/unicore/PropertyAliases.txt +# 3746848c181b5dbc1e614dfac9b8a5e3568e6525c693ac14e692ac55dec57e91 lib/unicore/ScriptExtensions.txt +# e6313a8edfd24f36c7a006fbcf1d1b7245b5dd009c6dde80441f0da08b822c43 lib/unicore/Scripts.txt +# 817ce2e9edca8e075a153f54b8f3b020345e37652cd2bda9b1495c366af17e7e lib/unicore/SpecialCasing.txt +# 93ab1acd8fd9d450463b50ae77eab151a7cda48f98b25b56baed8070f80fc936 lib/unicore/UnicodeData.txt +# ec5ba64af58297a46de17848eb984d2b231adb304de92e9d0d3befdbf9dc2551 lib/unicore/VerticalOrientation.txt +# 95bd55cf803b93eb0b4990cf0e1d70ede263b36412d9c6921fd6f15cef058961 lib/unicore/auxiliary/GCBTest.txt +# 39d73448fd257e6082f83ddf4c8bf6feb191e85dc8fc56b1a8512482de5e3dea lib/unicore/auxiliary/GraphemeBreakProperty.txt +# f385e70f79f5959ae66d64b00f4bda39db6cef78e5363a0cdd88db46eafc6c8f lib/unicore/auxiliary/LBTest.txt +# 7d6c909af97d0ab545a132d412f6e4e65c7eb5158514a7feb9bf00bcd05875f9 lib/unicore/auxiliary/SBTest.txt +# c47d674ef4170c46185bf56f7a4c6627f65f012295e0994f7dc4aea51f8fd8cf lib/unicore/auxiliary/SentenceBreakProperty.txt +# 3e3320bbbe775de7f1a0b9a30021eb949116a9b05cb461c90596c5ecf1743831 lib/unicore/auxiliary/WBTest.txt +# f221f89fe3bb3becc00de726d5694c4b7f464c316baff6d339b2ff3900bcb96c lib/unicore/auxiliary/WordBreakProperty.txt +# db2c41c618bab54b00e58223ad11cec550f9b9fd1a471de236e660da92fe4870 lib/unicore/extracted/DBidiClass.txt +# fecd8a1c49935d794c4c1012f4158aa536a13049a4c10d01aaf7b5f90f3b2cbc lib/unicore/extracted/DBinaryProperties.txt +# db6f38fb4aa8b9181b5e6a9f320de9d5c2c9b5687116a619b3cb90138b025e0b lib/unicore/extracted/DCombiningClass.txt +# 2524f69c175831fd84bfbaf13ea37992f41db167d728c51b1d0002c1d0b130b0 lib/unicore/extracted/DDecompositionType.txt +# 16852301d54ae59b5cfe0daa6b8e17fb688ed055d59b2a5a11eaafc650cc9d30 lib/unicore/extracted/DEastAsianWidth.txt +# 78f898b988049a5bea5039cea6ffe87a92596859ac660a6c438519b512fe2ee6 lib/unicore/extracted/DGeneralCategory.txt +# 33441692403901287c834f96bd33b671133a6f74e2732c61a497608b9e434932 lib/unicore/extracted/DJoinGroup.txt +# a792ac5ef602e3bace679cc96d7491701dcdb73d81c782253de88fdcc5e70e50 lib/unicore/extracted/DJoinType.txt +# 78e2600e24fa7d5ab62117de50b382f8b31b08401c37a0782c38dacb340b64e7 lib/unicore/extracted/DLineBreak.txt +# 1bde4ad73e271c6349fbd1972e54f38bba5cc1900c28f678e79b9e8909b31793 lib/unicore/extracted/DNumType.txt +# 6278722699123f3890e4b1cc42011e96d8960e4958a3b93484361530983d2611 lib/unicore/extracted/DNumValues.txt +# b3d90fc23817ea4e33e9a90107c0a6c7b23314efd5712905ed172624d5524693 lib/unicore/mktables +# a712c758275b460d18fa77a26ed3589689bb3f69dcc1ea99b913e32db92a5cd2 lib/unicore/version +# 2680b9254eb236c5c090f11b149605043e8c8433661b96efc4a42fb4709342a5 regen/charset_translations.pl +# 03e51b0f07beebd5da62ab943899aa4934eee1f792fa27c1fb638c33bf4ac6ea regen/mk_PL_charclass.pl +# 61ea8132bb9ea5c637609e2d026b0b85ce17d6bec544c2f08ce411e6f65e8386 regen/mk_invlists.pl +# ex: set ro: diff --git a/gnu/usr.bin/perl/lib/vars.t b/gnu/usr.bin/perl/lib/vars.t index 3075f8e5ffe..9b9822ca286 100644 --- a/gnu/usr.bin/perl/lib/vars.t +++ b/gnu/usr.bin/perl/lib/vars.t @@ -8,7 +8,7 @@ BEGIN { $| = 1; -print "1..27\n"; +print "1..28\n"; # catch "used once" warnings my @warns; @@ -103,3 +103,10 @@ print "${e}ok 26\n"; $e = !(grep(/^Global symbol "\%w" requires explicit package name/, @errs)) && 'not '; print "${e}ok 27\n"; + +{ + no strict; + eval 'use strict "refs"; my $zz = "abc"; use vars qw($foo$); my $y = $$zz;'; + $e = $@ ? "" : "not "; + print "${e}ok 28 # use vars error check modifying other strictness\n"; +} diff --git a/gnu/usr.bin/perl/pod/perl5282delta.pod b/gnu/usr.bin/perl/pod/perl5282delta.pod new file mode 100644 index 00000000000..7c01b7e11e6 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl5282delta.pod @@ -0,0 +1,199 @@ +=encoding utf8 + +=head1 NAME + +perl5282delta - what is new for perl v5.28.2 + +=head1 DESCRIPTION + +This document describes differences between the 5.28.1 release and the 5.28.2 +release. + +If you are upgrading from an earlier release such as 5.28.0, first read +L<perl5281delta>, which describes differences between 5.28.0 and 5.28.1. + +=head1 Incompatible Changes + +=head2 Any set of digits in the Common script are legal in a script run of +another script + +There are several sets of digits in the Common script. C<[0-9]> is the most +familiar. But there are also C<[\x{FF10}-\x{FF19}]> (FULLWIDTH DIGIT ZERO - +FULLWIDTH DIGIT NINE), and several sets for use in mathematical notation, such +as the MATHEMATICAL DOUBLE-STRUCK DIGITs. Any of these sets should be able to +appear in script runs of, say, Greek. But the previous design overlooked all +but the ASCII digits C<[0-9]>, so the design was flawed. This has been fixed, +so is both a bug fix and an incompatibility. + +All digits in a run still have to come from the same set of ten digits. + +L<[perl #133547]|https://rt.perl.org/Ticket/Display.html?id=133547> + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L<Module::CoreList> has been upgraded from version 5.20181129_28 to 5.20190419. + +=item * + +L<PerlIO::scalar> has been upgraded from version 0.29 to 0.30. + +=item * + +L<Storable> has been upgraded from version 3.08 to 3.08_01. + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item Windows + +The Windows Server 2003 SP1 Platform SDK build, with its early x64 compiler and +tools, was accidentally broken in Perl 5.27.9. This has now been fixed. + +=item Mac OS X + +Perl's build and testing process on Mac OS X for C<-Duseshrplib> builds is now +compatible with Mac OS X System Integrity Protection (SIP). + +SIP prevents binaries in F</bin> (and a few other places) being passed the +C<DYLD_LIBRARY_PATH> environment variable. For our purposes this prevents +C<DYLD_LIBRARY_PATH> from being passed to the shell, which prevents that +variable being passed to the testing or build process, so running C<perl> +couldn't find F<libperl.dylib>. + +To work around that, the initial build of the F<perl> executable expects to +find F<libperl.dylib> in the build directory, and the library path is then +adjusted during installation to point to the installed library. + +L<[perl #126706]|https://rt.perl.org/Ticket/Display.html?id=126706> + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +If an in-place edit is still in progress during global destruction and the +process exit code (as stored in C<$?>) is zero, perl will now treat the +in-place edit as successful, replacing the input file with any output produced. + +This allows code like: + + perl -i -ne 'print "Foo"; last' + +to replace the input file, while code like: + + perl -i -ne 'print "Foo"; die' + +will not. Partly resolves [perl #133659]. + +L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659> + +=item * + +A regression in Perl 5.28 caused the following code to fail + + close(STDIN); open(CHILD, "|wc -l")' + +because the child's stdin would be closed on exec. This has now been fixed. + +=item * + +C<pack "u", "invalid uuencoding"> now properly NUL terminates the zero-length +SV produced. + +L<[perl #132655]|https://rt.perl.org/Ticket/Display.html?id=132655> + +=item * + +Failing to compile a format now aborts compilation. Like other errors in +sub-parses this could leave the parser in a strange state, possibly crashing +perl if compilation continued. + +L<[perl #132158]|https://rt.perl.org/Ticket/Display.html?id=132158> + +=item * + +See L</Any set of digits in the Common script are legal in a script run of +another script>. + +=back + +=head1 Acknowledgements + +Perl 5.28.2 represents approximately 4 months of development since Perl 5.28.1 +and contains approximately 2,500 lines of changes across 75 files from 13 +authors. + +Excluding auto-generated files, documentation and release tools, there were +approximately 1,200 lines of changes to 29 .pm, .t, .c and .h files. + +Perl continues to flourish into its fourth decade thanks to a vibrant community +of users and developers. The following people are known to have contributed +the improvements that became Perl 5.28.2: + +Aaron Crane, Abigail, Andy Dougherty, David Mitchell, Karen Etheridge, Karl +Williamson, Leon Timmermans, Nicolas R., Sawyer X, Steve Hay, Tina Müller, +Tony Cook, Zak B. Elep. + +The list above is almost certainly incomplete as it is automatically generated +from version control history. In particular, it does not include the names of +the (very much appreciated) contributors who reported issues to the Perl bug +tracker. + +Many of the changes included in this version originated in the CPAN modules +included in Perl's core. We're grateful to the entire CPAN community for +helping Perl to flourish. + +For a more complete list of all of Perl's historical contributors, please see +the F<AUTHORS> file in the Perl source distribution. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the perl bug database +at L<https://rt.perl.org/> . There may also be information at +L<http://www.perl.org/> , the Perl Home Page. + +If you believe you have an unreported bug, please run the L<perlbug> program +included with your release. Be sure to trim your bug down to a tiny but +sufficient test case. Your bug report, along with the output of C<perl -V>, +will be sent off to perlbug@perl.org to be analysed by the Perl porting team. + +If the bug you are reporting has security implications which make it +inappropriate to send to a publicly archived mailing list, then see +L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> +for details of how to report the issue. + +=head1 Give Thanks + +If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, +you can do so by running the C<perlthanks> program: + + perlthanks + +This will send an email to the Perl 5 Porters list with your show of thanks. + +=head1 SEE ALSO + +The F<Changes> file for an explanation of how to view exhaustive details on +what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perl5300delta.pod b/gnu/usr.bin/perl/pod/perl5300delta.pod new file mode 100644 index 00000000000..0804fe37287 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl5300delta.pod @@ -0,0 +1,1435 @@ +=encoding utf8 + +=head1 NAME + +perl5300delta - what is new for perl v5.30.0 + +=head1 DESCRIPTION + +This document describes differences between the 5.28.0 release and the 5.30.0 +release. + +If you are upgrading from an earlier release such as 5.26.0, first read +L<perl5280delta>, which describes differences between 5.26.0 and 5.28.0. + +=head1 Notice + +sv_utf8_(downgrade|decode) are no longer marked as experimental. +L<[perl #133788]|https://rt.perl.org/Ticket/Display.html?id=133788>. + +=head1 Core Enhancements + +=head2 Limited variable length lookbehind in regular expression pattern matching is now experimentally supported + +Using a lookbehind assertion (like C<(?<=foo?)> or C<(?<!ba{1,9}r)> previously +would generate an error and refuse to compile. Now it compiles (if the +maximum lookbehind is at most 255 characters), but raises a warning in +the new C<experimental::vlb> warnings category. This is to caution you +that the precise behavior is subject to change based on feedback from +use in the field. + +See L<perlre/(?<=pattern)> and L<perlre/(?<!pattern)>. + +=head2 The upper limit C<"n"> specifiable in a regular expression quantifier of the form C<"{m,n}"> has been doubled to 65534 + +The meaning of an unbounded upper quantifier C<"{m,}"> remains unchanged. +It matches 2**31 - 1 times on most platforms, and more on ones where a C +language short variable is more than 4 bytes long. + +=head2 Unicode 12.1 is supported + +Because of a change in Unicode release cycles, Perl jumps from Unicode +10.0 in Perl 5.28 to Unicode 12.1 in Perl 5.30. + +For details on the Unicode changes, see +L<https://www.unicode.org/versions/Unicode11.0.0/> for 11.0; +L<https://www.unicode.org/versions/Unicode12.0.0/> for 12.0; +and +L<https://www.unicode.org/versions/Unicode12.1.0/> for 12.1. +(Unicode 12.1 differs from 12.0 only in the addition of a single +character, that for the new Japanese era name.) + +The Word_Break property, as in past Perl releases, remains tailored to +behave more in line with expectations of Perl users. This means that +sequential runs of horizontal white space characters are not broken +apart, but kept as a single run. Unicode 11 changed from past versions +to be more in line with Perl, but it left several white space characters +as causing breaks: TAB, NO BREAK SPACE, and FIGURE SPACE (U+2007). We +have decided to continue to use the previous Perl tailoring with regards +to these. + +=head2 Wildcards in Unicode property value specifications are now partially supported + +You can now do something like this in a regular expression pattern + + qr! \p{nv= /(?x) \A [0-5] \z / }! + +which matches all Unicode code points whose numeric value is +between 0 and 5 inclusive. So, it could match the Thai or Bengali +digits whose numeric values are 0, 1, 2, 3, 4, or 5. + +This marks another step in implementing the regular expression features +the Unicode Consortium suggests. + +Most properties are supported, with the remainder planned for 5.32. +Details are in L<perlunicode/Wildcards in Property Values>. + +=head2 qr'\N{name}' is now supported + +Previously it was an error to evaluate a named character C<\N{...}> +within a single quoted regular expression pattern (whose evaluation is +deferred from the normal place). This restriction is now removed. + +=head2 Turkic UTF-8 locales are now seamlessly supported + +Turkic languages have different casing rules than other languages for +the characters C<"i"> and C<"I">. The uppercase of C<"i"> is LATIN +CAPITAL LETTER I WITH DOT ABOVE (U+0130); and the lowercase of C<"I"> is LATIN +SMALL LETTER DOTLESS I (U+0131). Unicode furnishes alternate casing +rules for use with Turkic languages. Previously, Perl ignored these, +but now, it uses them when it detects that it is operating under a +Turkic UTF-8 locale. + +=head2 It is now possible to compile perl to always use thread-safe locale operations. + +Previously, these calls were only used when the perl was compiled to be +multi-threaded. To always enable them, add + + -Accflags='-DUSE_THREAD_SAFE_LOCALE' + +to your F<Configure> flags. + +=head2 Eliminate opASSIGN macro usage from core + +This macro is still defined but no longer used in core + +=head2 C<-Drv> now means something on C<-DDEBUGGING> builds + +Now, adding the verbose flag (C<-Dv>) to the C<-Dr> flag turns on all +possible regular expression debugging. + +=head1 Incompatible Changes + +=head2 Assigning non-zero to C<$[> is fatal + +Setting L<< C<$[>|perlvar/$[ >> to a non-zero value has been deprecated since +Perl 5.12 and now throws a fatal error. +See L<<< perldeprecation/Assigning non-zero to C<< $[ >> is fatal >>>. + +=head2 Delimiters must now be graphemes + +See L<perldeprecation/Use of unassigned code point or non-standalone grapheme +for a delimiter.> + +=head2 Some formerly deprecated uses of an unescaped left brace C<"{"> in +regular expression patterns are now illegal + +But to avoid breaking code unnecessarily, most instances that issued a +deprecation warning, remain legal and now have a non-deprecation warning +raised. See L<perldeprecation/Unescaped left braces in regular expressions>. + +=head2 Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal + +Calling sysread(), syswrite(), send() or recv() on a C<:utf8> handle, +whether applied explicitly or implicitly, is now fatal. This was +deprecated in perl 5.24. + +There were two problems with calling these functions on C<:utf8> +handles: + +=over + +=item * + +All four functions only paid attention to the C<:utf8> flag. Other +layers were completely ignored, so a handle with +C<:encoding(UTF-16LE)> layer would be treated as UTF-8. Other layers, +such as compression are completely ignored with or without the +C<:utf8> flag. + +=item * + +sysread() and recv() would read from the handle, skipping any +validation by the layers, and do no validation of their own. This +could lead to invalidly encoded perl scalars. + +=back + +L<[perl #125760]|https://rt.perl.org/Ticket/Display.html?id=125760>. + +=head2 my() in false conditional prohibited + +Declarations such as C<my $x if 0> are no longer permitted. + +L<[perl #133543]|https://rt.perl.org/Ticket/Display.html?id=133543>. + +=head2 Fatalize $* and $# + +These special variables, long deprecated, now throw exceptions when used. + +L<[perl #133583]|https://rt.perl.org/Ticket/Display.html?id=133583>. + +=head2 Fatalize unqualified use of dump() + +The C<dump()> function, long discouraged, may no longer be used unless it is +fully qualified, I<i.e.>, C<CORE::dump()>. + +L<[perl #133584]|https://rt.perl.org/Ticket/Display.html?id=133584>. + +=head2 Remove File::Glob::glob() + +The C<File::Glob::glob()> function, long deprecated, has been removed and now +throws an exception which advises use of C<File::Glob::bsd_glob()> instead. + +L<[perl #133586]|https://rt.perl.org/Ticket/Display.html?id=133586>. + +=head2 C<pack()> no longer can return malformed UTF-8 + +It croaks if it would otherwise return a UTF-8 string that contains +malformed UTF-8. This protects against potential security threats. This +is considered a bug fix as well. +L<[perl #131642]|https://rt.perl.org/Ticket/Display.html?id=131642>. + +=head2 Any set of digits in the Common script are legal in a script run of another script + +There are several sets of digits in the Common script. C<[0-9]> is the +most familiar. But there are also C<[\x{FF10}-\x{FF19}]> (FULLWIDTH +DIGIT ZERO - FULLWIDTH DIGIT NINE), and several sets for use in +mathematical notation, such as the MATHEMATICAL DOUBLE-STRUCK DIGITs. +Any of these sets should be able to appear in script runs of, say, +Greek. But the design of 5.30 overlooked all but the ASCII digits +C<[0-9]>, so the design was flawed. This has been fixed, so is both a +bug fix and an incompatibility. +L<[perl #133547]|https://rt.perl.org/Ticket/Display.html?id=133547>. + +All digits in a run still have to come from the same set of ten digits. + +=head2 JSON::PP enables allow_nonref by default + +As JSON::XS 4.0 changed its policy and enabled allow_nonref +by default, JSON::PP also enabled allow_nonref by default. + +=head1 Deprecations + +=head2 In XS code, use of various macros dealing with UTF-8. + +This deprecation was scheduled to become fatal in 5.30, but has been +delayed to 5.32 due to problems that showed up with some CPAN modules. +For details of what's affected, see L<perldeprecation| +perldeprecation/In XS code, use of various macros dealing with UTF-8.>. + +=head1 Performance Enhancements + +=over 4 + +=item * + +Translating from UTF-8 into the code point it represents now is done via a +deterministic finite automaton, speeding it up. As a typical example, +C<ord("\x7fff")> now requires 12% fewer instructions than before. The +performance of checking that a sequence of bytes is valid UTF-8 is similarly +improved, again by using a DFA. + +=item * + +Eliminate recursion from finalize_op(). +L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>. + +=item * + +A handful of small optimizations related to character folding +and character classes in regular expressions. + +=item * + +Optimization of C<IV> to C<UV> conversions. +L<[perl #133677]|https://rt.perl.org/Ticket/Display.html?id=133677>. + +=item * + +Speed up of the integer stringification algorithm by processing +two digits at a time instead of one. +L<[perl #133691]|https://rt.perl.org/Ticket/Display.html?id=133691>. + +=item * + +Improvements based on LGTM analysis and recommendation. +(L<https://lgtm.com/projects/g/Perl/perl5/alerts/?mode=tree>). +L<[perl #133686]|https://rt.perl.org/Ticket/Display.html?id=133686>. +L<[perl #133699]|https://rt.perl.org/Ticket/Display.html?id=133699>. + +=item * + +Code optimizations in F<regcomp.c>, F<regcomp.h>, F<regexec.c>. + +=item * + +Regular expression pattern matching of things like C<qr/[^I<a>]/> is +significantly sped up, where I<a> is any ASCII character. Other classes +can get this speed up, but which ones is complicated and depends on the +underlying bit patterns of those characters, so differs between ASCII +and EBCDIC platforms, but all case pairs, like C<qr/[Gg]/> are included, +as is C<[^01]>. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L<Archive::Tar> has been upgraded from version 2.30 to 2.32. + +=item * + +L<B> has been upgraded from version 1.74 to 1.76. + +=item * + +L<B::Concise> has been upgraded from version 1.003 to 1.004. + +=item * + +L<B::Deparse> has been upgraded from version 1.48 to 1.49. + +=item * + +L<bignum> has been upgraded from version 0.49 to 0.51. + +=item * + +L<bytes> has been upgraded from version 1.06 to 1.07. + +=item * + +L<Carp> has been upgraded from version 1.38 to 1.50 + +=item * + +L<Compress::Raw::Bzip2> has been upgraded from version 2.074 to 2.084. + +=item * + +L<Compress::Raw::Zlib> has been upgraded from version 2.076 to 2.084. + +=item * + +L<Config::Extensions> has been upgraded from version 0.02 to 0.03. + +=item * + +L<Config::Perl::V>. has been upgraded from version 0.29 to 0.32. This was due +to a new configuration variable that has influence on binary compatibility: +C<USE_THREAD_SAFE_LOCALE>. + +=item * + +L<CPAN> has been upgraded from version 2.20 to 2.22. + +=item * + +L<Data::Dumper> has been upgraded from version 2.170 to 2.174 + +L<Data::Dumper> now avoids leaking when C<croak>ing. + +=item * + +L<DB_File> has been upgraded from version 1.840 to 1.843. + +=item * + +L<deprecate> has been upgraded from version 0.03 to 0.04. + +=item * + +L<Devel::Peek> has been upgraded from version 1.27 to 1.28. + +=item * + +L<Devel::PPPort> has been upgraded from version 3.40 to 3.52. + +=item * + +L<Digest::SHA> has been upgraded from version 6.01 to 6.02. + +=item * + +L<Encode> has been upgraded from version 2.97 to 3.01. + +=item * + +L<Errno> has been upgraded from version 1.29 to 1.30. + +=item * + +L<experimental> has been upgraded from version 0.019 to 0.020. + +=item * + +L<ExtUtils::CBuilder> has been upgraded from version 0.280230 to 0.280231. + +=item * + +L<ExtUtils::Manifest> has been upgraded from version 1.70 to 1.72. + +=item * + +L<ExtUtils::Miniperl> has been upgraded from version 1.08 to 1.09. + +=item * + +L<ExtUtils::ParseXS> has been upgraded from version 3.39 to 3.40. +C<OUTLIST> parameters are no longer incorrectly included in the +automatically generated function prototype. +L<[perl #133654]|https://rt.perl.org/Ticket/Display.html?id=133654>. + +=item * + +L<feature> has been upgraded from version 1.52 to 1.54. + +=item * + +L<File::Copy> has been upgraded from version 2.33 to 2.34. + +=item * + +L<File::Find> has been upgraded from version 1.34 to 1.36. + +C<$File::Find::dont_use_nlink> now defaults to 1 on all +platforms. +L<[perl #133673]|https://rt.perl.org/Ticket/Display.html?id=133673>. + +Variables C<< $Is_Win32 >> and C<< $Is_VMS >> are being initialized. + +=item * + +L<File::Glob> has been upgraded from version 1.31 to 1.32. + +=item * + +L<File::Path> has been upgraded from version 2.15 to 2.16. + +=item * + +L<File::Spec> has been upgraded from version 3.74 to 3.78. + +Silence L<Cwd> warning on Android builds if C<targetsh> is not defined. + +=item * + +L<File::Temp> has been upgraded from version 0.2304 to 0.2309. + +=item * + +L<Filter::Util::Call> has been upgraded from version 1.58 to 1.59. + +=item * + +L<GDBM_File> has been upgraded from version 1.17 to 1.18. + +=item * + +L<HTTP::Tiny> has been upgraded from version 0.070 to 0.076. + +=item * + +L<I18N::Langinfo> has been upgraded from version 0.17 to 0.18. + +=item * + +L<IO> has been upgraded from version 1.39 to 1.40. + +=item * + +IO-Compress has been upgraded from version 2.074 to 2.084. + +Adds support for C<< IO::Uncompress::Zstd >> and +C<< IO::Uncompress::UnLzip >>. + +The C<< BinModeIn >> and C<< BinModeOut >> options are now no-ops. +ALL files will be read/written in binmode. + +=item * + +L<IPC::Cmd> has been upgraded from version 1.00 to 1.02. + +=item * + +L<JSON::PP> has been upgraded from version 2.97001 to 4.02. + +L<JSON::PP> as JSON::XS 4.0 enables C<allow_nonref> by default. + +=item * + +L<lib> has been upgraded from version 0.64 to 0.65. + +=item * + +L<Locale::Codes> has been upgraded from version 3.56 to 3.57. + +=item * + +L<Math::BigInt> has been upgraded from version 1.999811 to 1.999816. + +C<< bnok() >> now supports the full Kronenburg extension. +L<[cpan #95628]|https://rt.cpan.org/Ticket/Display.html?id=95628>. + +=item * + +L<Math::BigInt::FastCalc> has been upgraded from version 0.5006 to 0.5008. + +=item * + +L<Math::BigRat> has been upgraded from version 0.2613 to 0.2614. + +=item * + +L<Module::CoreList> has been upgraded from version 5.20180622 to 5.20190520. + +Changes to B::Op_private and Config + +=item * + +L<Module::Load> has been upgraded from version 0.32 to 0.34. + +=item * + +L<Module::Metadata> has been upgraded from version 1.000033 to 1.000036. + +Properly clean up temporary directories after testing. + +=item * + +L<NDBM_File> has been upgraded from version 1.14 to 1.15. + +=item * + +L<Net::Ping> has been upgraded from version 2.62 to 2.71. + +=item * + +L<ODBM_File> has been upgraded from version 1.15 to 1.16. + +=item * + +PathTools has been upgraded from version 3.74 to 3.78. + +=item * + +L<parent> has been upgraded from version 0.236 to 0.237. + +=item * + +L<perl5db.pl> has been upgraded from version 1.54 to 1.55. + +Debugging threaded code no longer deadlocks in C<DB::sub> nor +C<DB::lsub>. + +=item * + +L<perlfaq> has been upgraded from version 5.021011 to 5.20190126. + +=item * + +L<PerlIO::encoding> has been upgraded from version 0.26 to 0.27. + +Warnings enabled by setting the C<WARN_ON_ERR> flag in +C<$PerlIO::encoding::fallback> are now only produced if warnings are +enabled with C<use warnings "utf8";> or setting C<$^W>. + +=item * + +L<PerlIO::scalar> has been upgraded from version 0.29 to 0.30. + +=item * + +podlators has been upgraded from version 4.10 to 4.11. + +=item * + +L<POSIX> has been upgraded from version 1.84 to 1.88. + +=item * + +L<re> has been upgraded from version 0.36 to 0.37. + +=item * + +L<SDBM_File> has been upgraded from version 1.14 to 1.15. + +=item * + +L<sigtrap> has been upgraded from version 1.08 to 1.09. + +=item * + +L<Storable> has been upgraded from version 3.08 to 3.15. + +Storable no longer probes for recursion limits at build time. +L<[perl #133708]|https://rt.perl.org/Ticket/Display.html?id=133708> +and others. + +Metasploit exploit code was included to test for CVE-2015-1992 +detection, this caused anti-virus detections on at least one AV suite. +The exploit code has been removed and replaced with a simple +functional test. +L<[perl #133706]|https://rt.perl.org/Ticket/Display.html?id=133706> + +=item * + +L<Test::Simple> has been upgraded from version 1.302133 to 1.302162. + +=item * + +L<Thread::Queue> has been upgraded from version 3.12 to 3.13. + +=item * + +L<threads::shared> has been upgraded from version 1.58 to 1.60. + +Added support for extra tracing of locking, this requires a +C<-DDEBUGGING> and extra compilation flags. + +=item * + +L<Time::HiRes> has been upgraded from version 1.9759 to 1.9760. + +=item * + +L<Time::Local> has been upgraded from version 1.25 to 1.28. + +=item * + +L<Time::Piece> has been upgraded from version 1.3204 to 1.33. + +=item * + +L<Unicode::Collate> has been upgraded from version 1.25 to 1.27. + +=item * + +L<Unicode::UCD> has been upgraded from version 0.70 to 0.72. + +=item * + +L<User::grent> has been upgraded from version 1.02 to 1.03. + +=item * + +L<utf8> has been upgraded from version 1.21 to 1.22. + +=item * + +L<vars> has been upgraded from version 1.04 to 1.05. + +C<vars.pm> no longer disables non-vars strict when checking if strict +vars is enabled. +L<[perl #130674]|https://rt.perl.org/Ticket/Display.html?id=130674>. + +=item * + +L<version> has been upgraded from version 0.9923 to 0.9924. + +=item * + +L<warnings> has been upgraded from version 1.42 to 1.44. + +=item * + +L<XS::APItest> has been upgraded from version 0.98 to 1.00. + +=item * + +L<XS::Typemap> has been upgraded from version 0.16 to 0.17. + +=back + +=head2 Removed Modules and Pragmata + +The following modules will be removed from the core distribution in a +future release, and will at that time need to be installed from CPAN. +Distributions on CPAN which require these modules will need to list them as +prerequisites. + +The core versions of these modules will now issue C<"deprecated">-category +warnings to alert you to this fact. To silence these deprecation warnings, +install the modules in question from CPAN. + +Note that these are (with rare exceptions) fine modules that you are encouraged +to continue to use. Their disinclusion from core primarily hinges on their +necessity to bootstrapping a fully functional, CPAN-capable Perl installation, +not usually on concerns over their design. + +=over 4 + +=item * + +B::Debug is no longer distributed with the core distribution. It +continues to be available on CPAN as +C<< L<B::Debug|https://metacpan.org/pod/B::Debug> >>. + +=item * + +Locale::Codes has been removed at the request of its author. It +continues to be available on CPAN as +C<< L<Locale::Codes|https://metacpan.org/pod/Locale::Codes> >> +L<[perl #133458]|https://rt.perl.org/Ticket/Display.html?id=133458>. + +=back + +=head1 Documentation + +=head2 Changes to Existing Documentation + +We have attempted to update the documentation to reflect the changes +listed in this document. If you find any we have missed, send email +to L<perlbug@perl.org|mailto:perlbug@perl.org>. + +=head3 L<perlapi> + +=over 4 + +=item * + +C<AvFILL()> was wrongly listed as deprecated. This has been corrected. +L<[perl #133278]|https://rt.perl.org/Ticket/Display.html?id=133278> + +=back + +=head3 L<perlop> + +=over 4 + +=item * + +We no longer have null (empty line) here doc terminators, so +L<perlop> should not refer to them. + +=item * + +The behaviour of C<tr> when the delimiter is an apostrophe has been clarified. +In particular, hyphens aren't special, and C<\x{}> isn't interpolated. +L<[perl #130679]|https://rt.perl.org/Ticket/Display.html?id=130679> + +=back + +=head3 L<perlreapi>, L<perlvar> + +=over 4 + +=item * + +Improve docs for lastparen, lastcloseparen. + +=back + +=head3 L<perlfunc> + +=over 4 + +=item * + +The entry for L<perlfunc/-X> has been clarified to indicate that symbolic +links are followed for most tests. + +=item * + +Clarification of behaviour of C<reset EXPR>. + +=item * + +Try to clarify that C<< ref(qr/xx/) >> returns C<Regexp> rather than +C<REGEXP> and why. +L<[perl #133751]|https://rt.perl.org/Ticket/Display.html?id=133751>. + +=back + +=head3 L<perlreref> + +=over 4 + +=item * + +Clarification of the syntax of /(?(cond)yes)/. + +=back + +=head3 L<perllocale> + +=over 4 + +=item * + +There are actually two slightly different types of UTF-8 locales: one for Turkic +languages and one for everything else. Starting in Perl v5.30, Perl seamlessly +handles both types. + +=back + +=head3 L<perlrecharclass> + +=over 4 + +=item * + +Added a note for the ::xdigit:: character class. + +=back + +=head3 L<perlvar> + +=over 4 + +=item * + +More specific documentation of paragraph mode. +L<[perl #133722]|https://rt.perl.org/Ticket/Display.html?id=133722>. + +=back + +=head1 Diagnostics + +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L<perldiag>. + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +As noted under L<Incompatible Changes> above, the deprecation warning +"Unescaped left brace in regex is deprecated here (and will be fatal in Perl +5.30), passed through in regex; marked by S<<-- HERE> in m/%s/" has been +changed to the non-deprecation warning "Unescaped left brace in regex is passed +through in regex; marked by S<<-- HERE> in m/%s/". + +=item * + +Specifying C<\o{}> without anything between the braces now yields the +fatal error message "Empty \o{}". Previously it was "Number with no +digits". This means the same wording is used for this kind of error as +with similar constructs such as C<\p{}>. + +=item * + +Within the scope of the experimental feature C<use re 'strict'>, +specifying C<\x{}> without anything between the braces now yields the +fatal error message "Empty \x{}". Previously it was "Number with no +digits". This means the same wording is used for this kind of error as +with similar constructs such as C<\p{}>. It is legal, though not wise +to have an empty C<\x> outside of C<re 'strict'>; it silently generates +a NUL character. + +=item * + +L<Type of arg %d to %s must be %s (not %s)|perldiag/"Type of arg %d to %s must be %s (not %s)"> + +Attempts to push, pop, etc on a hash or glob now produce this message +rather than complaining that they no longer work on scalars. +L<[perl #130367]|https://rt.perl.org/Ticket/Display.html?id=130367>. + +=item * + +L<Prototype not terminated|perldiag/"Prototype not terminated"> + +The file and line number is now reported for this error. +L<[perl #133524]|https://rt.perl.org/Ticket/Display.html?id=133524> + +=item * + +Under C<< -Dr >> (or C<< use re 'Debug' >>) the compiled regex engine +program is displayed. It used to use two different spellings for I<< +infinity >>, +C<< INFINITY >>, and C<< INFTY >>. It now uses the latter exclusively, +as that spelling has been around the longest. + +=back + +=head1 Utility Changes + +=head2 L<xsubpp> + +=over 4 + +=item * + +The generated prototype (with C<< PROTOTYPES: ENABLE >>) would include +C<< OUTLIST >> parameters, but these aren't arguments to the perl function. +This has been rectified. +L<[perl #133654]|https://rt.perl.org/Ticket/Display.html?id=133654>. + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +Normally the thread-safe locale functions are used only on threaded +builds. It is now possible to force their use on unthreaded builds on +systems that have them available, by including the +C<-Accflags='-DUSE_THREAD_SAFE_LOCALE'> option to F<Configure>. + +=item * + +Improve detection of memrchr, strlcat, and strlcpy + +=item * + +Improve Configure detection of memmem(). +L<[perl #133760]|https://rt.perl.org/Ticket/Display.html?id=133760>. + +=item * + +Multiple improvements and fixes for -DPERL_GLOBAL_STRUCT build option. + +=item * + +Fix -DPERL_GLOBAL_STRUCT_PRIVATE build option. + +=back + +=head1 Testing + +=over 4 + +=item * + +F<t/lib/croak/op> +L<[perl #130367]|https://rt.perl.org/Ticket/Display.html?id=130367>. + +separate error for C<push>, etc. on hash/glob. + +=item * + +F<t/op/svleak.t> +L<[perl #133660]|https://rt.perl.org/Ticket/Display.html?id=133660>. + +Add test for C<goto &sub> in overload leaking. + +=item * + +Split F<t/re/fold_grind.t> into multiple test files. + +=item * + +Fix intermittent tests which failed due to race conditions which +surface during parallel testing. +L<[perl #133740]|https://rt.perl.org/Ticket/Display.html?id=133740>. + +=item * + +Thoroughly test paragraph mode, using a new test file, +F<t/io/paragraph_mode.t>. +L<[perl #133722]|https://rt.perl.org/Ticket/Display.html?id=133722>. + +=item * + +Some tests in F<< t/io/eintr.t >> caused the process to hang on +pre-16 Darwin. These tests are skipped for those version of Darwin. + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item HP-UX 11.11 + +An obscure problem in C<pack()> when compiling with HP C-ANSI-C has been fixed +by disabling optimizations in F<pp_pack.c>. + +=item Mac OS X + +Perl's build and testing process on Mac OS X for C<-Duseshrplib> +builds is now compatible with Mac OS X System Integrity Protection +(SIP). + +SIP prevents binaries in F</bin> (and a few other places) being passed +the C<DYLD_LIBRARY_PATH> environment variable. For our purposes this +prevents C<DYLD_LIBRARY_PATH> from being passed to the shell, which +prevents that variable being passed to the testing or build process, +so running C<perl> couldn't find F<libperl.dylib>. + +To work around that, the initial build of the F<perl> executable +expects to find F<libperl.dylib> in the build directory, and the +library path is then adjusted during installation to point to the +installed library. + +L<[perl #126706]|https://rt.perl.org/Ticket/Display.html?id=126706>. + +=item Minix3 + +Some support for Minix3 has been re-added. + +=item Cygwin + +Cygwin doesn't make C<< cuserid >> visible. + +=item Win32 Mingw + +C99 math functions are now available. + +=item Windows + +=over 4 + +=item * + +The C<USE_CPLUSPLUS> build option which has long been available in +F<win32/Makefile> (for B<nmake>) and F<win32/makefile.mk> (for B<dmake>) is now +also available in F<win32/GNUmakefile> (for B<gmake>). + +=item * + +The B<nmake> makefile no longer defaults to Visual C++ 6.0 (a very old version +which is unlikely to be widely used today). As a result, it is now a +requirement to specify the C<CCTYPE> since there is no obvious choice of which +modern version to default to instead. Failure to specify C<CCTYPE> will result +in an error being output and the build will stop. + +(The B<dmake> and B<gmake> makefiles will automatically detect which compiler +is being used, so do not require C<CCTYPE> to be set. This feature has not yet +been added to the B<nmake> makefile.) + +=item * + +C<sleep()> with warnings enabled for a C<USE_IMP_SYS> build no longer +warns about the sleep timeout being too large. +L<[perl #133376]|https://rt.perl.org/Ticket/Display.html?id=133376>. + +=item * + +Support for compiling perl on Windows using Microsoft Visual Studio 2019 +(containing Visual C++ 14.2) has been added. + +=item * + +socket() now sets C<$!> if the protocol, address family and socket +type combination is not found. +L<[perl #133853]|https://rt.perl.org/Ticket/Display.html?id=133853>. + +=item * + +The Windows Server 2003 SP1 Platform SDK build, with its early x64 compiler and +tools, was accidentally broken in Perl 5.27.9. This has now been fixed. + +=back + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +The sizing pass has been eliminated from the regular expression +compiler. An extra pass may instead be needed in some cases to count +the number of parenthetical capture groups. + +=item * + +A new function L<perlapi/C<my_strtod>> or its synonym, Strtod(), is +now available with the same signature as the libc strtod(). It provides +strotod() equivalent behavior on all platforms, using the best available +precision, depending on platform capabilities and F<Configure> options, +while handling locale-related issues, such as if the radix character +should be a dot or comma. + +=item * + +Added C<newSVsv_nomg()> to copy a SV without processing get magic on +the source. +L<[perl #132964]|https://rt.perl.org/Ticket/Display.html?id=132964>. + +=item * + +It is now forbidden to malloc more than C<PTRDIFF_T_MAX> bytes. Much +code (including C optimizers) assumes that all data structures will not +be larger than this, so this catches such attempts before overflow +happens. + +=item * + +Two new regnodes have been introduced C<< EXACT_ONLY8 >>, and +C<< EXACTFU_ONLY8 >>. They're equivalent to C<< EXACT >> and C<< EXACTFU >>, +except that they contain a code point which requires UTF-8 to +represent/match. Hence, if the target string isn't UTF-8, we know +it can't possibly match, without needing to try. + +=item * + +C<< print_bytes_for_locale() >> is now defined if C<< DEBUGGING >>, +Prior, it didn't get defined unless C<< LC_COLLATE >> was defined +on the platform. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +Compilation under C<-DPERL_MEM_LOG> and C<-DNO_LOCALE> have been fixed. + +=item * + +Perl 5.28 introduced an C<index()> optimization when comparing to -1 (or +indirectly, e.g. >= 0). When this optimization was triggered inside a C<when> +clause it caused a warning ("Argument %s isn't numeric in smart match"). This +has now been fixed. +L<[perl #133368]|https://rt.perl.org/Ticket/Display.html?id=133368> + +=item * + +The new in-place editing code no longer leaks directory handles. +L<[perl #133314]|https://rt.perl.org/Ticket/Display.html?id=133314>. + +=item * + +Warnings produced from constant folding operations on overloaded +values no longer produce spurious "Use of uninitialized value" +warnings. +L<[perl #132683]|https://rt.perl.org/Ticket/Display.html?id=132683>. + +=item * + +Fix for "mutator not seen in (lex = ...) .= ..." +L<[perl #133441]|https://rt.perl.org/Ticket/Display.html?id=133441>. + +=item * + +C<pack "u", "invalid uuencoding"> now properly NUL terminates the +zero-length SV produced. +L<[perl #132655]|https://rt.perl.org/Ticket/Display.html?id=132655>. + +=item * + +Improve the debugging output for calloc() calls with C<-Dm>. +L<[perl #133439]|https://rt.perl.org/Ticket/Display.html?id=133439>. + +=item * + +Regexp script runs were failing to permit ASCII digits in some cases. +L<[perl #133547]|https://rt.perl.org/Ticket/Display.html?id=133547>. + +=item * + +On Unix-like systems supporting a platform-specific technique for +determining L<< C<$^X>|perlvar/$^X >>, Perl failed to fall back to the +generic technique when the platform-specific one fails (for example, a Linux +system with /proc not mounted). This was a regression in Perl 5.28.0. +L<[perl #133573]|https://rt.perl.org/Ticket/Display.html?id=133573>. + +=item * + +L<SDBM_File> is now more robust with corrupt database files. The +improvements do not make SDBM files suitable as an interchange format. +L<[perl #132147]|https://rt.perl.org/Ticket/Display.html?id=132147>. + +=item * + +C<binmode($fh);> or C<binmode($fh, ':raw');> now properly removes the +C<:utf8> flag from the default C<:crlf> I/O layer on Win32. +L<[perl #133604]|https://rt.perl.org/Ticket/Display.html?id=133604>. + +=item * + +The experimental reference aliasing feature was misinterpreting array and +hash slice assignment as being localised, e.g. + + \(@a[3,5,7]) = \(....); + +was being interpreted as: + + local \(@a[3,5,7]) = \(....); + +L<[perl #133538]|https://rt.perl.org/Ticket/Display.html?id=133538>. + +=item * + +C<sort SUBNAME> within an C<eval EXPR> when C<EXPR> was UTF-8 upgraded +could panic if the C<SUBNAME> was non-ASCII. +L<[perl #134061]|https://rt.perl.org/Ticket/Display.html?id=134061>. + +=item * + +Correctly handle realloc() modifying C<errno> on success so that the +modification isn't visible to the perl user, since realloc() is called +implicitly by the interpreter. This modification is permitted by the +C standard, but has only been observed on FreeBSD 13.0-CURRENT. +L<[perl #133958]|https://rt.perl.org/Ticket/Display.html?id=133958>. + +=item * + +Perl now exposes POSIX C<getcwd> as C<Internals::getcwd()> if +available. This is intended for use by C<Cwd.pm> during bootstrapping +and may be removed or changed without notice. This fixes some +bootstrapping issues while building perl in a directory where some +ancestor directory isn't readable. +L<[perl #133951]|https://rt.perl.org/Ticket/Display.html?id=133951>. + +=item * + +C<pack()> no longer can return malformed UTF-8. It croaks if it would +otherwise return a UTF-8 string that contains malformed UTF-8. This +protects against potential security threats. +L<[perl #131642]|https://rt.perl.org/Ticket/Display.html?id=131642>. + +=item * + +See L</Any set of digits in the Common script are legal in a script run +of another script>. + +=item * + +Regular expression matching no longer leaves stale UTF-8 length magic +when updating C<$^R>. This could result in C<length($^R)> returning +an incorrect value. + +=item * + +Reduce recursion on ops +L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>. + +This can prevent stack overflow when processing extremely deep op +trees. + +=item * + +Avoid leak in multiconcat with overloading. +L<[perl #133789]|https://rt.perl.org/Ticket/Display.html?id=133789>. + +=item * + +The handling of user-defined C<\p{}> properties (see +L<perlunicode/User-Defined Character Properties>) has been rewritten to +be in C (instead of Perl). This speeds things up, but in the process +several inconsistencies and bug fixes are made. + +=over 4 + +=item 1 + +A few error messages have minor wording changes. This is essentially +because the new way is integrated into the regex error handling +mechanism that marks the position in the input at which the error +occurred. That was not possible previously. The messages now also +contain additional back-trace-like information in case the error occurs +deep in nested calls. + +=item 2 + +A user-defined property is implemented as a perl subroutine with certain +highly constrained naming conventions. It was documented previously +that the sub would be in the current package if the package was +unspecified. This turned out not to be true in all cases, but now it +is. + +=item 3 + +All recursive calls are treated as infinite recursion. Previously they +would cause the interpreter to panic. Now, they cause the regex pattern +to fail to compile. + +=item 4 + +Similarly, any other error likely would lead to a panic; now to just the +pattern failing to compile. + +=item 5 + +The old mechanism did not detect illegal ranges in the definition of the +property. Now, the range max must not be smaller than the range min. +Otherwise, the pattern fails to compile. + +=item 6 + +The intention was to have each sub called only once during the lifetime +of the program, so that a property's definition is immutable. This was +relaxed so that it could be called once for all /i compilations, and +potentially a second time for non-/i (the sub is passed a parameter +indicating which). However, in practice there were instances when this +was broken, and multiple calls were possible. Those have been fixed. +Now (besides the /i,non-/i cases) the only way a sub can be called +multiple times is if some component of it has not been defined yet. For +example, suppose we have sub IsA() whose definition is known at compile +time, and it in turn calls isB() whose definition is not yet known. +isA() will be called each time a pattern it appears in is compiled. If +isA() also calls isC() and that definition is known, isC() will be +called just once. + +=item 7 + +There were some races and very long hangs should one thread be compiling +the same property as another simultaneously. These have now been fixed. + +=back + +=item * + +Fixed a failure to match properly. + +An EXACTFish regnode has a finite length it can hold for the string +being matched. If that length is exceeded, a second node is used for +the next segment of the string, for as many regnodes as are needed. +Care has to be taken where to break the string, in order to deal +multi-character folds in Unicode correctly. If we want to break a +string at a place which could potentially be in the middle of a +multi-character fold, we back off one (or more) characters, leaving +a shorter EXACTFish regnode. This backing off mechanism contained +an off-by-one error. +L<[perl #133756]|https://rt.perl.org/Ticket/Display.html?id=133756>. + +=item * + +A bare C<eof> call with no previous file handle now returns true. +L<[perl #133721]|https://rt.perl.org/Ticket/Display.html?id=133721> + +=item * + +Failing to compile a format now aborts compilation. Like other errors +in sub-parses this could leave the parser in a strange state, possibly +crashing perl if compilation continued. +L<[perl #132158]|https://rt.perl.org/Ticket/Display.html?id=132158> + +=item * + +If an in-place edit is still in progress during global destruction and +the process exit code (as stored in C<$?>) is zero, perl will now +treat the in-place edit as successful, replacing the input file with +any output produced. + +This allows code like: + + perl -i -ne 'print "Foo"; last' + +to replace the input file, while code like: + + perl -i -ne 'print "Foo"; die' + +will not. Partly resolves +L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659>. + +=item * + +A regression in 5.28 caused the following code to fail + + close(STDIN); open(CHILD, "|wc -l")' + +because the child's stdin would be closed on exec. This has now been fixed. + +=item * + +Fixed an issue where compiling a regexp containing both compile-time +and run-time code blocks could lead to trying to compile something +which is invalid syntax. + +=item * + +Fixed build failures with C<< -DNO_LOCALE_NUMERIC >> and +C<< -DNO_LOCALE_COLLATE >>. +L<[perl #133696]|https://rt.perl.org/Ticket/Display.html?id=133696>. + +=item * + +Prevent the tests in F<< ext/B/t/strict.t >> from being skipped. +L<[perl #133713]|https://rt.perl.org/Ticket/Display.html?id=133713>. + +=item * + +C<< /di >> nodes ending or beginning in I<s> are now C<< EXACTF >>. We do not +want two C<< EXACTFU >> to be joined together during optimization, +and to form a C<< ss >>, C<< sS >>, C<< Ss >> or C<< SS >> sequence; +they are the only multi-character sequences which may match differently +under C<< /ui >> and C<< /di >>. + +=back + +=head1 Acknowledgements + +Perl 5.30.0 represents approximately 11 months of development since Perl +5.28.0 and contains approximately 620,000 lines of changes across 1,300 +files from 58 authors. + +Excluding auto-generated files, documentation and release tools, there were +approximately 510,000 lines of changes to 750 .pm, .t, .c and .h files. + +Perl continues to flourish into its fourth decade thanks to a vibrant +community of users and developers. The following people are known to have +contributed the improvements that became Perl 5.30.0: + +Aaron Crane, Abigail, Alberto Simões, Alexandr Savca, Andreas König, Andy +Dougherty, Aristotle Pagaltzis, Brian Greenfield, Chad Granum, Chris +'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari MannsÃ¥ker, Dan Book, Dan +Dedrick, Daniel Dragan, Dan Kogai, David Cantrell, David Mitchell, Dominic +Hargreaves, E. Choroba, Ed J, Eugen Konkov, François Perrad, Graham Knop, +Hauke D, H.Merijn Brand, Hugo van der Sanden, Jakub Wilk, James Clarke, +James E Keenan, Jerry D. Hedden, Jim Cromie, John SJ Anderson, Karen +Etheridge, Karl Williamson, Leon Timmermans, Matthias Bethke, Nicholas +Clark, Nicolas R., Niko Tyni, Pali, Petr PÃsaÅ™, Phil Pearl (Lobbes), +Richard Leach, Ryan Voots, Sawyer X, Shlomi Fish, Sisyphus, Slaven Rezic, +Steve Hay, Sullivan Beck, Tina Müller, Tomasz Konojacki, Tom Wyant, Tony +Cook, Unicode Consortium, Yves Orton, Zak B. Elep. + +The list above is almost certainly incomplete as it is automatically +generated from version control history. In particular, it does not include +the names of most of the (very much appreciated) contributors who reported +issues to the Perl bug tracker. Noteworthy in this release were the large +number of bug fixes made possible by Sergey Aleynikov's high quality perlbug +reports for issues he discovered by fuzzing with AFL. + +Many of the changes included in this version originated in the CPAN modules +included in Perl's core. We're grateful to the entire CPAN community for +helping Perl to flourish. + +For a more complete list of all of Perl's historical contributors, please +see the F<AUTHORS> file in the Perl source distribution. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the perl bug database +at L<https://rt.perl.org/>. There may also be information at +L<http://www.perl.org/>, the Perl Home Page. + +If you believe you have an unreported bug, please run the L<perlbug> program +included with your release. Be sure to trim your bug down to a tiny but +sufficient test case. Your bug report, along with the output of C<perl -V>, +will be sent off to perlbug@perl.org to be analysed by the Perl porting team. + +If the bug you are reporting has security implications which make it +inappropriate to send to a publicly archived mailing list, then see +L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> +for details of how to report the issue. + +=head1 Give Thanks + +If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, +you can do so by running the C<perlthanks> program: + + perlthanks + +This will send an email to the Perl 5 Porters list with your show of thanks. + +=head1 SEE ALSO + +The F<Changes> file for an explanation of how to view exhaustive details on +what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perldeprecation.pod b/gnu/usr.bin/perl/pod/perldeprecation.pod index 40ad2ecbe96..5213eca2297 100644 --- a/gnu/usr.bin/perl/pod/perldeprecation.pod +++ b/gnu/usr.bin/perl/pod/perldeprecation.pod @@ -100,15 +100,67 @@ Forcing literal C<{> characters to be escaped will enable the Perl language to be extended in various ways in future releases. To avoid needlessly breaking existing code, the restriction is is not enforced in contexts where there are unlikely to ever be extensions that could -conflict with the use there of C<{> as a literal. +conflict with the use there of C<{> as a literal. A non-deprecation +warning that the left brace is being taken literally is raised in +contexts where there could be confusion about it. Literal uses of C<{> were deprecated in Perl 5.20, and some uses of it started to give deprecation warnings since. These cases were made fatal in Perl 5.26. Due to an oversight, not all cases of a use of a literal C<{> got a deprecation warning. Some cases started warning in Perl 5.26, -and they will be fatal by Perl 5.30. Other case started in Perl 5.28, +and were made fatal in Perl 5.30. Other cases started in Perl 5.28, and will be made fatal in 5.32. +=head3 In XS code, use of various macros dealing with UTF-8. + +These macros will require an extra parameter in Perl 5.32: +C<isALPHANUMERIC_utf8>, +C<isASCII_utf8>, +C<isBLANK_utf8>, +C<isCNTRL_utf8>, +C<isDIGIT_utf8>, +C<isIDFIRST_utf8>, +C<isPSXSPC_utf8>, +C<isSPACE_utf8>, +C<isVERTWS_utf8>, +C<isWORDCHAR_utf8>, +C<isXDIGIT_utf8>, +C<isALPHANUMERIC_LC_utf8>, +C<isALPHA_LC_utf8>, +C<isASCII_LC_utf8>, +C<isBLANK_LC_utf8>, +C<isCNTRL_LC_utf8>, +C<isDIGIT_LC_utf8>, +C<isGRAPH_LC_utf8>, +C<isIDCONT_LC_utf8>, +C<isIDFIRST_LC_utf8>, +C<isLOWER_LC_utf8>, +C<isPRINT_LC_utf8>, +C<isPSXSPC_LC_utf8>, +C<isPUNCT_LC_utf8>, +C<isSPACE_LC_utf8>, +C<isUPPER_LC_utf8>, +C<isWORDCHAR_LC_utf8>, +C<isXDIGIT_LC_utf8>, +C<toFOLD_utf8>, +C<toLOWER_utf8>, +C<toTITLE_utf8>, +and +C<toUPPER_utf8>. + +There is now a macro that corresponds to each one of these, simply by +appending C<_safe> to the name. It takes the extra parameter. +For example, C<isDIGIT_utf8_safe> corresponds to C<isDIGIT_utf8>, but +takes the extra parameter, and its use doesn't generate a deprecation +warning. All are documented in L<perlapi/Character case changing> and +L<perlapi/Character classification>. + +You can change to use these versions at any time, or, if you can live +with the deprecation messages, wait until 5.32 and add the parameter to +the existing calls, without changing the names. + +This change was originally scheduled for 5.30, but was delayed. + =head2 Perl 5.30 =head3 C<< $* >> is no longer supported @@ -134,14 +186,14 @@ error in Perl 5.30. To specify how numbers are formatted when printed, one is advised to use C<< printf >> or C<< sprintf >> instead. -=head3 Assigning non-zero to C<< $[ >> will be fatal +=head3 Assigning non-zero to C<< $[ >> is fatal This variable (and the corresponding C<array_base> feature and -L<arybase> module) allows changing the base for array and string +L<arybase> module) allowed changing the base for array and string indexing operations. Setting this to a non-zero value has been deprecated since Perl 5.12 and -will become fatal in Perl 5.30. +throws a fatal error as of Perl 5.30. =head3 C<< File::Glob::glob() >> will disappear @@ -230,73 +282,22 @@ A grapheme is what appears to a native-speaker of a language to be a character. In Unicode (and hence Perl) a grapheme may actually be several adjacent characters that together form a complete grapheme. For example, there can be a base character, like "R" and an accent, like a -circumflex "^", that appear when displayed to be a single character with -the circumflex hovering over the "R". Perl currently allows things like -that circumflex to be delimiters of strings, patterns, I<etc>. When -displayed, the circumflex would look like it belongs to the character -just to the left of it. In order to move the language to be able to -accept graphemes as delimiters, we have to deprecate the use of -delimiters which aren't graphemes by themselves. Also, a delimiter must -already be assigned (or known to be never going to be assigned) to try -to future-proof code, for otherwise code that works today would fail to -compile if the currently unassigned delimiter ends up being something -that isn't a stand-alone grapheme. Because Unicode is never going to -assign -L<non-character code points|perlunicode/Noncharacter code points>, nor -L<code points that are above the legal Unicode maximum| -perlunicode/Beyond Unicode code points>, those can be delimiters, and -their use won't raise this warning. - -In Perl 5.30, delimiters which are unassigned code points, or which -are non-standalone graphemes will be fatal. - -=head3 In XS code, use of various macros dealing with UTF-8. - -These macros will require an extra parameter in Perl 5.30: -C<isALPHANUMERIC_utf8>, -C<isASCII_utf8>, -C<isBLANK_utf8>, -C<isCNTRL_utf8>, -C<isDIGIT_utf8>, -C<isIDFIRST_utf8>, -C<isPSXSPC_utf8>, -C<isSPACE_utf8>, -C<isVERTWS_utf8>, -C<isWORDCHAR_utf8>, -C<isXDIGIT_utf8>, -C<isALPHANUMERIC_LC_utf8>, -C<isALPHA_LC_utf8>, -C<isASCII_LC_utf8>, -C<isBLANK_LC_utf8>, -C<isCNTRL_LC_utf8>, -C<isDIGIT_LC_utf8>, -C<isGRAPH_LC_utf8>, -C<isIDCONT_LC_utf8>, -C<isIDFIRST_LC_utf8>, -C<isLOWER_LC_utf8>, -C<isPRINT_LC_utf8>, -C<isPSXSPC_LC_utf8>, -C<isPUNCT_LC_utf8>, -C<isSPACE_LC_utf8>, -C<isUPPER_LC_utf8>, -C<isWORDCHAR_LC_utf8>, -C<isXDIGIT_LC_utf8>, -C<toFOLD_utf8>, -C<toLOWER_utf8>, -C<toTITLE_utf8>, -and -C<toUPPER_utf8>. +circumflex "^", that appear to be a single character when displayed, +with the circumflex hovering over the "R". + +As of Perl 5.30, use of delimiters which are non-standalone graphemes is +fatal, in order to move the language to be able to accept +multi-character graphemes as delimiters. + +Also, as of Perl 5.30, delimiters which are unassigned code points +but that may someday become assigned are prohibited. Otherwise, code +that works today would fail to compile if the currently unassigned +delimiter ends up being something that isn't a stand-alone grapheme. +Because Unicode is never going to assign L<non-character code +points|perlunicode/Noncharacter code points>, nor L<code points that are +above the legal Unicode maximum|perlunicode/Beyond Unicode code +points>, those can be delimiters. -There is now a macro that corresponds to each one of these, simply by -appending C<_safe> to the name. It takes the extra parameter. -For example, C<isDIGIT_utf8_safe> corresponds to C<isDIGIT_utf8>, but -takes the extra parameter, and its use doesn't generate a deprecation -warning. All are documented in L<perlapi/Character case changing> and -L<perlapi/Character classification>. - -You can change to use these versions at any time, or, if you can live -with the deprecation messages, wait until 5.30 and add the parameter to -the existing calls, without changing the names. =head2 Perl 5.28 diff --git a/gnu/usr.bin/perl/pod/perlinterp.pod b/gnu/usr.bin/perl/pod/perlinterp.pod index 7ac6c9ee4cb..b516badc8b4 100644 --- a/gnu/usr.bin/perl/pod/perlinterp.pod +++ b/gnu/usr.bin/perl/pod/perlinterp.pod @@ -434,7 +434,7 @@ operations in. The easiest way to examine the op tree is to stop Perl after it has finished parsing, and get it to dump out the tree. This is exactly what the compiler backends L<B::Terse|B::Terse>, L<B::Concise|B::Concise> -and L<B::Debug|B::Debug> do. +and CPAN module <B::Debug do. Let's have a look at how Perl sees C<$a = $b + $c>: @@ -781,26 +781,27 @@ See L<perlguts/"Localizing changes"> for how to use the save stack. One thing you'll notice about the Perl source is that it's full of macros. Some have called the pervasive use of macros the hardest thing to understand, others find it adds to clarity. Let's take an example, -the code which implements the addition operator: +a stripped-down version the code which implements the addition operator: 1 PP(pp_add) 2 { - 3 dSP; dATARGET; tryAMAGICbin(add,opASSIGN); - 4 { - 5 dPOPTOPnnrl_ul; - 6 SETn( left + right ); - 7 RETURN; - 8 } - 9 } + 3 dSP; dATARGET; + 4 tryAMAGICbin_MG(add_amg, AMGf_assign|AMGf_numeric); + 5 { + 6 dPOPTOPnnrl_ul; + 7 SETn( left + right ); + 8 RETURN; + 9 } + 10 } Every line here (apart from the braces, of course) contains a macro. The first line sets up the function declaration as Perl expects for PP code; line 3 sets up variable declarations for the argument stack and -the target, the return value of the operation. Finally, it tries to see +the target, the return value of the operation. Line 4 tries to see if the addition operation is overloaded; if so, the appropriate subroutine is called. -Line 5 is another variable declaration - all variable declarations +Line 6 is another variable declaration - all variable declarations start with C<d> - which pops from the top of the argument stack two NVs (hence C<nn>) and puts them into the variables C<right> and C<left>, hence the C<rl>. These are the two operands to the addition operator. diff --git a/gnu/usr.bin/perl/pod/perltodo.pod b/gnu/usr.bin/perl/pod/perltodo.pod index 2011e1dd374..8fda91f9a33 100644 --- a/gnu/usr.bin/perl/pod/perltodo.pod +++ b/gnu/usr.bin/perl/pod/perltodo.pod @@ -5,7 +5,7 @@ perltodo - Link to the Perl to-do list =head1 DESCRIPTION The Perl 5 to-do list is maintained in the git repository, and can -be viewed at L<http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod> +be viewed at L<https://github.com/Perl/perl5/blob/blead/Porting/todo.pod>. (The to-do list used to be here in perltodo. That has stopped, as installing a snapshot that becomes increasingly out of date isn't that useful to anyone.) diff --git a/gnu/usr.bin/perl/regen/charset_translations.pl b/gnu/usr.bin/perl/regen/charset_translations.pl index 2966d9a4d2e..d2a0014557a 100644 --- a/gnu/usr.bin/perl/regen/charset_translations.pl +++ b/gnu/usr.bin/perl/regen/charset_translations.pl @@ -194,7 +194,7 @@ sub get_I8_2_utf($) { $indent = ""; } else { - $indent = " " x (($indent_level * 4) - 1); + $indent = " " x $indent_level; } die "Unknown character set '$charset'" unless exists $ebcdic_translations{$charset}; @@ -207,13 +207,18 @@ sub get_I8_2_utf($) { # We use all the typical variant characters to construct the #if, # so that it is unlikely that a different code page will match # this #if - for my $char (qw/A \\\ [ ] { } ^ ~ ! # | $ @ `/) { + my @variant_chars = qw/A \\\ [ ] { } ^ ~ ! # | $ @ `/; + push @variant_chars, "\n"; + for my $char (@variant_chars) { my $compare; my $ascii_ord = ord $char; my $first_time = $return eq ""; $compare = $ebcdic_translations{$charset}[$ascii_ord]; $return .= " && " unless $first_time; + $char = '\n' if $char eq "\n"; + die "Non-graphical character ord=" . ord($char) + if $char !~ /[[:graph:]]/; $return .= "'$char' == $compare"; $return .= " /* $charset */" if $first_time; last if $charset eq $ascii_key; diff --git a/gnu/usr.bin/perl/regen/mph.pl b/gnu/usr.bin/perl/regen/mph.pl index e0c84fbfabd..7a074a30ec8 100644 --- a/gnu/usr.bin/perl/regen/mph.pl +++ b/gnu/usr.bin/perl/regen/mph.pl @@ -4,14 +4,36 @@ use warnings; use Data::Dumper; use Carp; use Text::Wrap; +use bignum; # Otherwise fails on 32-bit systems my $DEBUG= 0; my $RSHIFT= 8; my $FNV_CONST= 16777619; +# The basic idea is that you have a two level structure, and effectively +# hash the key twice. +# +# The first hash finds a bucket in the array which contains a seed which +# is used for the second hash, which then leads to a bucket with key +# data which is compared against to determine if the key is a match. +# +# If the first hash finds no seed, then the key cannot match. +# +# In our case we cheat a bit, and hash the key only once, but use the +# low bits for the first lookup and the high-bits for the second. +# +# So for instance: +# +# h= (h >> RSHIFT) ^ s; +# +# is how the second hash is computed. We right shift the original hash +# value and then xor in the seed2, which will be non-zero. +# +# That then gives us the bucket which contains the key data we need to +# match for a valid key. + sub _fnv { my ($key, $seed)= @_; - my $hash = 0+$seed; foreach my $char (split //, $key) { $hash = $hash ^ ord($char); @@ -306,7 +328,7 @@ EOF_CODE push @code, sprintf "STATIC const U32 ${prefix}_SEED1 = 0x%08x;\n", $seed1; push @code, sprintf "STATIC const U32 ${prefix}_FNV_CONST = 0x%08x;\n\n", $FNV_CONST; - push @code, "\n"; + push @code, "/* The comments give the input key for the row it is in */\n"; push @code, "STATIC const struct $struct_name $table_name\[${prefix}_BUCKETS] = {\n", join(",\n", @$rows)."\n};\n\n"; push @code, <<"EOF_CODE"; ${prefix}_VALt $match_name( const unsigned char * const key, const U16 key_len ) { @@ -414,8 +436,6 @@ sub make_mph_from_hash { my $hash= shift; # we do this twice because often we can find longer prefixes on the second pass. - my @keys= sort {length($b) <=> length($a) || $a cmp $b } keys %$hash; - my ($smart_blob, $res_to_split)= build_split_words($hash,0); { my ($smart_blob2, $res_to_split2)= build_split_words($hash,1); diff --git a/gnu/usr.bin/perl/t/io/getcwd.t b/gnu/usr.bin/perl/t/io/getcwd.t new file mode 100644 index 00000000000..f3ad58bb4c8 --- /dev/null +++ b/gnu/usr.bin/perl/t/io/getcwd.t @@ -0,0 +1,22 @@ +#!./perl -w + +BEGIN { + chdir 't' if -d 't'; + require "./test.pl"; + set_up_inc('../lib'); +} + +use Config; + +$Config{d_getcwd} + or plan skip_all => "no getcwd"; + +my $cwd = Internals::getcwd(); +ok(!defined $cwd || $cwd ne "", + "Internals::getcwd() returned a reasonable result"); + +if (defined $cwd) { + ok(-d $cwd, "check a success result is a directory"); +} + +done_testing(); diff --git a/gnu/usr.bin/perl/t/io/nargv.t b/gnu/usr.bin/perl/t/io/nargv.t index 598ceed6178..a62c4f265eb 100644 --- a/gnu/usr.bin/perl/t/io/nargv.t +++ b/gnu/usr.bin/perl/t/io/nargv.t @@ -6,7 +6,7 @@ BEGIN { set_up_inc('../lib'); } -print "1..6\n"; +print "1..7\n"; my $j = 1; for $i ( 1,2,5,4,3 ) { @@ -84,6 +84,50 @@ sub other { } } +{ + # (perl #133314) directory handle leak + # + # We process a significant number of files here to make sure any + # leaks are significant + @ARGV = mkfiles(1 .. 10); + for my $file (@ARGV) { + open my $f, ">", $file; + print $f "\n"; + close $f; + } + local $^I = ".bak"; + local $_; + while (<>) { + s/^/foo/; + } +} + +{ + # (perl #133314) directory handle leak + # We open three handles here because the file processing opened: + # - the original file + # - the output file, and finally + # - the directory + # so we need to open the first two to use up the slots used for the original + # and output files. + # This test assumes fd are allocated in the typical *nix way - lowest + # available, which I believe is the case for the Win32 CRTs too. + # If this turns out not to be the case this test will need to skip on + # such platforms or only run on a small set of known-good platforms. + my $tfile = mkfiles(1); + open my $f, "<", $tfile + or die "Cannot open temp: $!"; + open my $f2, "<", $tfile + or die "Cannot open temp: $!"; + open my $f3, "<", $tfile + or die "Cannot open temp: $!"; + print +(fileno($f3) < 20 ? "ok" : "not ok"), " 7 check fd leak\n"; + close $f; + close $f2; + close $f3; +} + + my @files; sub mkfiles { foreach (@_) { @@ -93,4 +137,4 @@ sub mkfiles { return wantarray ? @results : @results[-1]; } -END { unlink_all map { ($_, "$_.bak") } mkfiles(1..5) } +END { unlink_all map { ($_, "$_.bak") } @files } diff --git a/gnu/usr.bin/perl/t/io/paragraph_mode.t b/gnu/usr.bin/perl/t/io/paragraph_mode.t new file mode 100644 index 00000000000..edbb4cb1964 --- /dev/null +++ b/gnu/usr.bin/perl/t/io/paragraph_mode.t @@ -0,0 +1,504 @@ +#!./perl + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + set_up_inc('../lib'); +} + +plan tests => 80; + +my ($OUT, $filename, @chunks, @expected, $msg); + +{ + # We start with files whose "paragraphs" contain no internal newlines. + @chunks = ( + join('' => ( 1..3 )), + join('' => ( 4..6 )), + join('' => ( 7..9 )), + 10 + ); + + { + $msg = "'Well behaved' file: >= 2 newlines between text blocks; no internal newlines; 3 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + ); + print $OUT $chunks[3]; + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + $chunks[3], + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Well behaved' file: >= 2 newlines between text blocks; no internal newlines; 0 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Well behaved' file: >= 2 newlines between text blocks; no internal newlines; 1 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 1, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Well behaved' file: >= 2 newlines between text blocks; no internal newlines; 2 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 2, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } +} + +{ + # We continue with files whose "paragraphs" contain internal newlines. + @chunks = ( + join('' => ( 1, 2, "\n", 3 )), + join('' => ( 4, 5, " \n", 6 )), + join('' => ( 7, 8, " \t\n", 9 )), + 10 + ); + + { + $msg = "'Misbehaving' file: >= 2 newlines between text blocks; no internal newlines; 3 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + ); + print $OUT $chunks[3]; + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + $chunks[3], + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Misbehaving' file: >= 2 newlines between text blocks; no internal newlines; 0 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Misbehaving' file: >= 2 newlines between text blocks; no internal newlines; 1 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 1, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Misbehaving' file: >= 2 newlines between text blocks; no internal newlines; 2 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 2, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } +} + +{ + # We continue with files which start with newlines + # but whose "paragraphs" contain no internal newlines. + # We'll set our expectation that the leading newlines will get trimmed off + # and everything else will proceed normally. + + @chunks = ( + join('' => ( 1..3 )), + join('' => ( 4..6 )), + join('' => ( 7..9 )), + 10 + ); + + { + $msg = "'Badly behaved' file: leading newlines; 3 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + ); + print $OUT $chunks[3]; + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + $chunks[3], + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Badly behaved' file: leading newlines; 0 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Badly behaved' file: leading newlines; 1 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 1, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Badly behaved' file: leading newlines; 2 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 2, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } +} + +{ + # We continue with files which start with newlines + # and whose "paragraphs" contain internal newlines. + # We'll set our expectation that the leading newlines will get trimmed off + # and everything else will proceed normally. + + @chunks = ( + join('' => ( 1, 2, "\n", 3 )), + join('' => ( 4, 5, " \n", 6 )), + join('' => ( 7, 8, " \t\n", 9 )), + 10 + ); + + { + $msg = "'Very badly behaved' file: leading newlines; internal newlines; 3 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + ); + print $OUT $chunks[3]; + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + $chunks[3], + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Very badly behaved' file: leading newlines; internal newlines; 0 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Very badly behaved' file: leading newlines; internal newlines; 1 final newline"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 1, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } + + { + $msg = "'Very badly behaved' file: leading newlines; internal newlines; 2 final newlines"; + + ($OUT, $filename) = open_tempfile(); + print $OUT "\n\n\n"; + print $OUT "$_\n" for ( + $chunks[0], + ("") x 1, + $chunks[1], + ("") x 2, + $chunks[2], + ("") x 3, + $chunks[3], + ("") x 2, + ); + close $OUT or die; + + @expected = ( + "$chunks[0]\n\n", + "$chunks[1]\n\n", + "$chunks[2]\n\n", + "$chunks[3]\n\n", + ); + local $/ = ''; + perform_tests($filename, \@expected, $msg); + } +} + +########## SUBROUTINES ########## + +sub open_tempfile { + my $filename = tempfile(); + open my $OUT, '>', $filename or die; + binmode $OUT; + return ($OUT, $filename); +} + +sub perform_tests { + my ($filename, $expected, $msg) = @_; + open my $IN, '<', $filename or die; + my @got = <$IN>; + my $success = 1; + for (my $i=0; $i<=$#${expected}; $i++) { + if ($got[$i] ne $expected->[$i]) { + $success = 0; + last; + } + } + ok($success, $msg); + + seek $IN, 0, 0; + for (my $i=0; $i<=$#${expected}; $i++) { + is(<$IN>, $expected->[$i], "Got expected record $i"); + } + close $IN or die; +} diff --git a/gnu/usr.bin/perl/t/lib/croak/gv b/gnu/usr.bin/perl/t/lib/croak/gv new file mode 100644 index 00000000000..dabc099570b --- /dev/null +++ b/gnu/usr.bin/perl/t/lib/croak/gv @@ -0,0 +1,71 @@ +__END__ +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$a = ${"#"}; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$a = ${"*"}; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$a = ${#}; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$a = ${*}; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$a = $#; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$a = $*; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$# = $a; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$* = $a; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$a = \$#; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$a = \$*; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$a = \$#; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$a = $*; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $# is no longer supported as of Perl 5.30 [RT #133583] +$a = $#; +EXPECT +$# is no longer supported as of Perl 5.30 at - line 1. +######## +# NAME $* is no longer supported as of Perl 5.30 [RT #133583] +$a = $*; +EXPECT +$* is no longer supported as of Perl 5.30 at - line 1. diff --git a/gnu/usr.bin/perl/t/lib/croak/pp_ctl b/gnu/usr.bin/perl/t/lib/croak/pp_ctl index f705b653575..b1e754c356b 100644 --- a/gnu/usr.bin/perl/t/lib/croak/pp_ctl +++ b/gnu/usr.bin/perl/t/lib/croak/pp_ctl @@ -36,7 +36,7 @@ Can't "goto" into a binary or list expression at - line 5. # NAME dump with computed label no warnings 'deprecated'; my $label = "foo"; -dump $label; +CORE::dump $label; EXPECT Can't find label foo at - line 3. ######## diff --git a/gnu/usr.bin/perl/t/lib/croak/regcomp b/gnu/usr.bin/perl/t/lib/croak/regcomp index c72e3d47bf1..0ba705e9159 100644 --- a/gnu/usr.bin/perl/t/lib/croak/regcomp +++ b/gnu/usr.bin/perl/t/lib/croak/regcomp @@ -63,3 +63,10 @@ my $p00="[\\x59\\N{U+.}]"; qr/$p00/ui; EXPECT Invalid hexadecimal number in \N{U+...} in regex; marked by <-- HERE in m/[\x59\N{U+. <-- HERE }]/ at - line 1. ######## +# NAME ${^RE_COMPILE_RECURSION_LIMIT} [perl #131551] +BEGIN { ${^RE_COMPILE_RECURSION_LIMIT} = ${^RE_COMPILE_RECURSION_LIMIT} = 2; } +qr/(a)/; +qr/((a))/; +EXPECT +Too many nested open parens in regex; marked by <-- HERE in m/(( <-- HERE a))/ at - line 3. +######## diff --git a/gnu/usr.bin/perl/t/lib/feature/removed b/gnu/usr.bin/perl/t/lib/feature/removed new file mode 100644 index 00000000000..f2805eecd86 --- /dev/null +++ b/gnu/usr.bin/perl/t/lib/feature/removed @@ -0,0 +1,10 @@ +Test that removed features can be disabled, but not enabled. + +__END__ +use feature "array_base"; +EXPECT +OPTIONS regex +^Feature "array_base" is not supported by Perl [v0-9.]+ at - line 1. +######## +no feature "array_base"; +EXPECT diff --git a/gnu/usr.bin/perl/t/lib/warnings/2use b/gnu/usr.bin/perl/t/lib/warnings/2use index a02505eff1d..4df98e2baa6 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/2use +++ b/gnu/usr.bin/perl/t/lib/warnings/2use @@ -359,21 +359,3 @@ EXPECT Reversed += operator at - line 6. Use of uninitialized value $c in scalar chop at - line 9. ######## - -# Check that deprecation warnings are not implicitly disabled by use -$*; -use warnings "void"; -$#; -EXPECT -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3. -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 5. -Useless use of a variable in void context at - line 5. -######## - -# Check that deprecation warnings are not implicitly disabled by no -$*; -no warnings "void"; -$#; -EXPECT -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3. -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 5. diff --git a/gnu/usr.bin/perl/t/lib/warnings/gv b/gnu/usr.bin/perl/t/lib/warnings/gv index 122e4904e48..2a2dcf45470 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/gv +++ b/gnu/usr.bin/perl/t/lib/warnings/gv @@ -3,12 +3,6 @@ Can't locate package %s for @%s::ISA @ISA = qw(Fred); joe() - $# is no longer supported - $* is no longer supported - - $a = ${"#"} ; - $a = ${"*"} ; - Name "main::a" used only once: possible typo Mandatory Warnings ALL TODO @@ -32,66 +26,6 @@ EXPECT Undefined subroutine &main::joe called at - line 3. ######## # gv.c -$a = ${"#"}; -$a = ${"*"}; -no warnings 'deprecated' ; -$a = ${"#"}; -$a = ${"*"}; -EXPECT -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 2. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3. -######## -# gv.c -$a = ${#}; -$a = ${*}; -no warnings 'deprecated' ; -$a = ${#}; -$a = ${*}; -EXPECT -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 2. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3. -######## -# gv.c -$a = $#; -$a = $*; -$# = $a; -$* = $a; -$a = \$#; -$a = \$*; -no warnings 'deprecated' ; -$a = $#; -$a = $*; -$# = $a; -$* = $a; -$a = \$#; -$a = \$*; -EXPECT -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 2. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3. -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 4. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 5. -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 6. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 7. -######## -# gv.c -@a = @#; -@a = @*; -$a = $#; -$a = $*; -EXPECT -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 4. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 5. -######## -# gv.c -$a = $#; -$a = $*; -@a = @#; -@a = @*; -EXPECT -$# is no longer supported. Its use will be fatal in Perl 5.30 at - line 2. -$* is no longer supported. Its use will be fatal in Perl 5.30 at - line 3. -######## -# gv.c $a = ${^ENCODING}; $a = ${^E_NCODING}; ${^E_NCODING} = 1; # We pretend this variable never existed. diff --git a/gnu/usr.bin/perl/t/lib/warnings/util b/gnu/usr.bin/perl/t/lib/warnings/util index e82d6a66171..92be6efa732 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/util +++ b/gnu/usr.bin/perl/t/lib/warnings/util @@ -106,3 +106,32 @@ no warnings 'portable' ; $a = oct "0047777777777" ; EXPECT Octal number > 037777777777 non-portable at - line 5. +######## +# util.c +# NAME 132683: Use of uninitialized value" in warn() with constant folding and overloaded numbers +use strict; +use warnings; + +package Foo; + +use overload log => sub { + warn "here\n"; # Use of uninitialized value in warn + CORE::log($_[0]->{value}); +}; + +sub import { + overload::constant + integer => sub { __PACKAGE__->new($_[0]) }; +} + +sub new { + my ($class, $value) = @_; + bless {value => $value}, $class; +} + +package main; + +BEGIN { Foo->import } +my $x = log(2); +EXPECT +here diff --git a/gnu/usr.bin/perl/t/op/stash_parse_gv.t b/gnu/usr.bin/perl/t/op/stash_parse_gv.t index 05694ca8ce0..bd9e95cf37b 100644 --- a/gnu/usr.bin/perl/t/op/stash_parse_gv.t +++ b/gnu/usr.bin/perl/t/op/stash_parse_gv.t @@ -23,7 +23,7 @@ foreach my $t (@tests) { my ( $sub, $name ) = @$t; fresh_perl_is( - qq[sub $sub { print qq[ok\n]} &{"$sub"} ], + qq[sub $sub { print qq[ok\n]} &{"$sub"}; my \$d = defined *{"foo$sub"} ], q[ok], { switches => ['-w'] }, $name diff --git a/gnu/usr.bin/perl/t/op/tr_latin1.t b/gnu/usr.bin/perl/t/op/tr_latin1.t new file mode 100644 index 00000000000..e01477c422f --- /dev/null +++ b/gnu/usr.bin/perl/t/op/tr_latin1.t @@ -0,0 +1,20 @@ +# Tests for tr, but the test file is not utf8. + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + set_up_inc('../lib'); +} + +plan tests => 1; + +{ # This test is malloc senstive. Right now on some platforms anyway, space + # for the final \xff needs to be mallocd, and that's what caused the + # problem, because the '-' had already been parsed and was later added + # without making space for it + fresh_perl_is('print "\x8c" =~ y o\x{100}ÄŒÿÿ€€-ÿoo', "1", { }, + 'RT #134067 heap-buffer-overflow in S_scan_const'); + +} + +1; diff --git a/gnu/usr.bin/perl/t/re/alpha_assertions.t b/gnu/usr.bin/perl/t/re/alpha_assertions.t index 3d28bbcdd25..f37ad890b0d 100644 --- a/gnu/usr.bin/perl/t/re/alpha_assertions.t +++ b/gnu/usr.bin/perl/t/re/alpha_assertions.t @@ -3,6 +3,7 @@ use strict; use warnings; no warnings 'once'; +no warnings 'experimental::vlb'; # This tests that the alphabetic assertions, like '(*atomic:...) work # It just sets a flag and calls regexp.t which will run through its test diff --git a/gnu/usr.bin/perl/t/re/anyof.t b/gnu/usr.bin/perl/t/re/anyof.t index 12fb9b3a8cf..d33cbb2abea 100644 --- a/gnu/usr.bin/perl/t/re/anyof.t +++ b/gnu/usr.bin/perl/t/re/anyof.t @@ -1,5 +1,7 @@ #!./perl +use strict; +use warnings; use utf8; # This tests that the ANYOF nodes generated by bracketed character classes are @@ -29,291 +31,825 @@ BEGIN { # differences are skipped on EBCDIC. They are all at the beginning of the # array, and a special marker entry is used to delmit the boundary between # skipped and not skipped. +# +# NOTE: If the pattern contains (?8) it will be upgraded to UTF-8 after +# stripping that + +# 2**32-1 or 2**64-1 +my $highest_cp_string = "F" x (($Config{uvsize} < 8) ? 8 : 16); + +my $next_highest_cp_string = $highest_cp_string =~ s/ F $ /E/xr; + +my $highest_cp = "\\x{$highest_cp_string}"; +my $next_highest_cp = "\\x{$next_highest_cp_string}"; + +sub get_compiled ($) { + # Convert platform-independent values to what is suitable for the + # platform + + my $pattern = shift; + + $pattern =~ s/\{INFTY\}/$highest_cp/g; + $pattern =~ s/\{INFTY_minus_1\}/$next_highest_cp/g; + my $use_utf8 = ($pattern =~ s/\Q(?8)//); + + $pattern = "my \$a = '$pattern';"; + $pattern .= "utf8::upgrade(\$a);" if $use_utf8; + $pattern .= "qr/\$a/"; + my $actual_pattern = "use re qw(Debug COMPILE); $pattern"; + + my $result = fresh_perl($actual_pattern); + if ($? != 0) { # Re-run so as to display STDERR. + fail($pattern); + fresh_perl($actual_pattern, { stderr => 0, verbose => 1 }); + return; + } + + # The Debug output will come back as a bunch of lines. We are + # interested only in the line after /Final program/ + my @lines = split /\n/, $result; + while (defined ($_ = shift @lines)) { + last if /Final program/; + } + + $_ = shift @lines; + + s/ \s* \( \d+ \) \s* //x; # Get rid of the node branch + s/ ^ \s* \d+ : \s* //x; # ... And the node number + + # Use platform-independent values + s/$highest_cp_string/INFTY/g; + s/$next_highest_cp_string/INFTY_minus_1/g; + + return $_; +} + +# Note: EXACTish lowercases the hex; ANYOF uppercases, without braces my @tests = ( + '[\xe0\xc0]' => 'EXACTFU <\\x{e0}>', + '[\xe1\xc1]' => 'EXACTFU <\\x{e1}>', + '[\xe2\xc2]' => 'EXACTFU <\\x{e2}>', + '[\xe3\xc3]' => 'EXACTFU <\\x{e3}>', + '[\xe4\xc4]' => 'EXACTFU <\\x{e4}>', + '[\xc5\xe5]' => 'ANYOF[\\xC5\\xE5]', + '[\xe6\xc6]' => 'EXACTFU <\\x{e6}>', + '[\xe7\xc7]' => 'EXACTFU <\\x{e7}>', + '[\xe8\xc8]' => 'EXACTFU <\\x{e8}>', + '[\xe9\xc9]' => 'EXACTFU <\\x{e9}>', + '[\xea\xca]' => 'EXACTFU <\\x{ea}>', + '[\xeb\xcb]' => 'EXACTFU <\\x{eb}>', + '[\xec\xcc]' => 'EXACTFU <\\x{ec}>', + '[\xee\xce]' => 'EXACTFU <\\x{ee}>', + '[\xef\xcf]' => 'EXACTFU <\\x{ef}>', + '[\xf0\xd0]' => 'EXACTFU <\\x{f0}>', + '[\xf1\xd1]' => 'EXACTFU <\\x{f1}>', + '[\xf2\xd2]' => 'EXACTFU <\\x{f2}>', + '[\xf3\xd3]' => 'EXACTFU <\\x{f3}>', + '[\xf4\xd4]' => 'EXACTFU <\\x{f4}>', + '[\xf5\xd5]' => 'EXACTFU <\\x{f5}>', + '[\xf6\xd6]' => 'EXACTFU <\\x{f6}>', + '[\xf8\xd8]' => 'EXACTFU <\\x{f8}>', + '[\xf9\xd9]' => 'EXACTFU <\\x{f9}>', + '[\xfa\xda]' => 'EXACTFU <\\x{fa}>', + '[\xfb\xdb]' => 'EXACTFU <\\x{fb}>', + '[\xfc\xdc]' => 'EXACTFU <\\x{fc}>', + '[\xfd\xdd]' => 'EXACTFU <\\x{fd}>', + '[\xfe\xde]' => 'EXACTFU <\\x{fe}>', + '[[{]' => 'ANYOFM[\[\{]', '[^\S ]' => 'ANYOFD[\t\n\x0B\f\r{utf8}\x85\xA0][1680 2000-200A 2028-2029 202F 205F 3000]', - '[^\n\r]' => 'ANYOF[^\n\r][0100-INFINITY]', - '[^\/\|,\$\%%\@\ \%"\<\>\:\#\&\*\{\}\[\]\(\)]' => 'ANYOF[^ "#$%&()*,/:<>@\[\]\{|\}][0100-INFINITY]', - '[^[:^print:][:^ascii:]]' => 'ANYOF[\x20-\x7E]', - '[ [:blank:]]' => 'ANYOFD[\t {utf8}\xA0][1680 2000-200A 202F 205F 3000]', - '[_[:^blank:]]' => 'ANYOFD[^\t {utf8}\xA0][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]', - '[\xA0[:^blank:]]' => 'ANYOF[^\t ][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]', - '[ [:blank:]]' => 'ANYOFD[\t {utf8}\xA0][1680 2000-200A 202F 205F 3000]', - '[_[:^blank:]]' => 'ANYOFD[^\t {utf8}\xA0][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]', - '[\xA0[:^blank:]]' => 'ANYOF[^\t ][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]', - '(?d:[_[:^blank:]])' => 'ANYOFD[^\t {utf8}\xA0][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]', + '[^\n\r]' => 'ANYOF[^\n\r][0100-INFTY]', + '[^\/\|,\$\%%\@\ \%"\<\>\:\#\&\*\{\}\[\]\(\)]' => 'ANYOF[^ "#$%&()*,/:<>@\[\]\{|\}][0100-INFTY]', + '[[:ascii:]]' => 'ANYOFM[\x00-\x7F]', + '[[:^ascii:]]' => 'NANYOFM[\x00-\x7F]', + '[[:^ascii:]\x{2C2}]' => 'NANYOFM[\x00-\x7F]', + '(?u)[[:ascii:]]' => 'ANYOFM[\x00-\x7F]', + '(?u)[[:^ascii:]]' => 'NANYOFM[\x00-\x7F]', + '(?a)[[:ascii:]]' => 'ANYOFM[\x00-\x7F]', + '(?a)[[:^ascii:]]' => 'NANYOFM[\x00-\x7F]', + '(?a)[[:^ascii:]\x{2C2}]' => 'NANYOFM[\x00-\x7F]', + '[[:cntrl:]]' => 'POSIXD[:cntrl:]', + '[^[:^print:][:^ascii:]]' => 'POSIXA[:print:]', + '[[:blank:]]' => 'POSIXD[:blank:]', + '[ [:blank:]]' => 'POSIXD[:blank:]', + '[_[:blank:]]' => 'ANYOFD[\t _{utf8}\xA0][1680 2000-200A 202F 205F 3000]', + '[_[:^blank:]]' => 'NPOSIXD[:blank:]', + '[\xA0[:^blank:]]' => 'ANYOF[^\t ][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFTY]', + '(?d:[_[:^blank:]])' => 'NPOSIXD[:blank:]', '[\x{07}-\x{0B}]' => 'ANYOF[\a\b\t\n\x0B]', - '(?il:[\x{212A}])' => 'ANYOFL{i}[{utf8 locale}Kk][212A]', - '(?il:(?[\x{212A}]))' => 'ANYOFL{utf8-locale-reqd}[Kk][212A]', + '(?il)[\x{212A}]' => 'ANYOFL{i}[{utf8 locale}Kk][212A]', + '(?il)(?[\x{212A}])' => 'ANYOFL{utf8-locale-reqd}[Kk][212A]', + + '(?i)b[s]\xe0' => 'ANYOFM[Bb]', # The s goes into a 2nd node + + '[aA]' => 'ANYOFM[Aa]', + '[bB]' => 'ANYOFM[Bb]', + '[kK]' => 'ANYOFM[Kk]', 'ebcdic_ok_below_this_marker', + '(?i:[^:])' => 'NANYOFM[:]', + + '[^\n]' => 'REG_ANY', + + '[[:alpha:]]' => 'POSIXD[:alpha:]', + '[[:^alpha:]]' => 'NPOSIXD[:alpha:]', + '[[:^alpha:]\x{2C2}]' => 'NPOSIXU[:alpha:]', + '(?l)[[:alpha:]]' => 'POSIXL[:alpha:]', + '(?l)[[:^alpha:]]' => 'NPOSIXL[:alpha:]', + '(?l)[[:^alpha:]\x{2C2}]' => 'NPOSIXL[:alpha:]', + '(?u)[[:alpha:]]' => 'POSIXU[:alpha:]', + '(?u)[[:^alpha:]]' => 'NPOSIXU[:alpha:]', + '(?a)[[:alpha:]]' => 'POSIXA[:alpha:]', + '(?a)[[:^alpha:]]' => 'NPOSIXA[:alpha:]', + '(?a)[[:^alpha:]\x{2C2}]' => 'NPOSIXA[:alpha:]', + '[[:alpha:][:^alpha:]]' => 'SANY', + '[^[:alpha:][:^alpha:]]' => 'OPFAIL', + '(?l)[[:alpha:][:^alpha:]]' => 'SANY', + '(?l)[^[:alpha:][:^alpha:]]' => 'OPFAIL', + '(?u)[[:alpha:][:^alpha:]]' => 'SANY', + '(?u)[^[:alpha:][:^alpha:]]' => 'OPFAIL', + '(?a)[[:alpha:][:^alpha:]]' => 'SANY', + '(?a)[^[:alpha:][:^alpha:]]' => 'OPFAIL', + '[[:alnum:]]' => 'POSIXD[:alnum:]', + '[[:^alnum:]]' => 'NPOSIXD[:alnum:]', + '[[:^alnum:]\x{2C2}]' => 'NPOSIXU[:alnum:]', + '(?l)[[:alnum:]]' => 'POSIXL[:alnum:]', + '(?l)[[:^alnum:]]' => 'NPOSIXL[:alnum:]', + '(?l)[[:^alnum:]\x{2C2}]' => 'NPOSIXL[:alnum:]', + '(?u)[[:alnum:]]' => 'POSIXU[:alnum:]', + '(?u)[[:^alnum:]]' => 'NPOSIXU[:alnum:]', + '(?a)[[:alnum:]]' => 'POSIXA[:alnum:]', + '(?a)[[:^alnum:]]' => 'NPOSIXA[:alnum:]', + '(?a)[[:^alnum:]\x{2C2}]' => 'NPOSIXA[:alnum:]', + '[[:alnum:][:^alnum:]]' => 'SANY', + '[^[:alnum:][:^alnum:]]' => 'OPFAIL', + '(?l)[[:alnum:][:^alnum:]]' => 'SANY', + '(?l)[^[:alnum:][:^alnum:]]' => 'OPFAIL', + '(?u)[[:alnum:][:^alnum:]]' => 'SANY', + '(?u)[^[:alnum:][:^alnum:]]' => 'OPFAIL', + '(?a)[[:alnum:][:^alnum:]]' => 'SANY', + '(?a)[^[:alnum:][:^alnum:]]' => 'OPFAIL', + '(?l)[[:ascii:]]' => 'POSIXL[:ascii:]', + '(?l)[[:^ascii:]]' => 'NPOSIXL[:ascii:]', + '(?l)[[:^ascii:]\x{2C2}]' => 'NPOSIXL[:ascii:]', + '[[:ascii:][:^ascii:]]' => 'SANY', + '[^[:ascii:][:^ascii:]]' => 'OPFAIL', + '(?l)[[:ascii:][:^ascii:]]' => 'SANY', + '(?l)[^[:ascii:][:^ascii:]]' => 'OPFAIL', + '(?u)[[:ascii:][:^ascii:]]' => 'SANY', + '(?u)[^[:ascii:][:^ascii:]]' => 'OPFAIL', + '(?a)[[:ascii:][:^ascii:]]' => 'SANY', + '(?a)[^[:ascii:][:^ascii:]]' => 'OPFAIL', + '[[:^blank:]]' => 'NPOSIXD[:blank:]', + '[[:^blank:]\x{2C2}]' => 'NPOSIXU[:blank:]', + '(?l)[[:blank:]]' => 'POSIXL[:blank:]', + '(?l)[[:^blank:]]' => 'NPOSIXL[:blank:]', + '(?l)[[:^blank:]\x{2C2}]' => 'NPOSIXL[:blank:]', + '(?u)[[:blank:]]' => 'POSIXU[:blank:]', + '(?u)[[:^blank:]]' => 'NPOSIXU[:blank:]', + '(?a)[[:blank:]]' => 'POSIXA[:blank:]', + '(?a)[[:^blank:]]' => 'NPOSIXA[:blank:]', + '(?a)[[:^blank:]\x{2C2}]' => 'NPOSIXA[:blank:]', + '[[:blank:]]' => 'POSIXD[:blank:]', + '[[:blank:][:^blank:]]' => 'SANY', + '[^[:blank:][:^blank:]]' => 'OPFAIL', + '(?l)[[:blank:][:^blank:]]' => 'SANY', + '(?l)[^[:blank:][:^blank:]]' => 'OPFAIL', + '(?u)[[:blank:][:^blank:]]' => 'SANY', + '(?u)[^[:blank:][:^blank:]]' => 'OPFAIL', + '(?a)[[:blank:][:^blank:]]' => 'SANY', + '(?a)[^[:blank:][:^blank:]]' => 'OPFAIL', + '[[:^cntrl:]]' => 'NPOSIXD[:cntrl:]', + '[[:^cntrl:]\x{2C2}]' => 'NPOSIXU[:cntrl:]', + '(?l)[[:cntrl:]]' => 'POSIXL[:cntrl:]', + '(?l)[[:^cntrl:]]' => 'NPOSIXL[:cntrl:]', + '(?l)[[:^cntrl:]\x{2C2}]' => 'NPOSIXL[:cntrl:]', + '(?u)[[:cntrl:]]' => 'POSIXU[:cntrl:]', + '(?u)[[:^cntrl:]]' => 'NPOSIXU[:cntrl:]', + '(?a)[[:cntrl:]]' => 'POSIXA[:cntrl:]', + '(?a)[[:^cntrl:]]' => 'NPOSIXA[:cntrl:]', + '(?a)[[:^cntrl:]\x{2C2}]' => 'NPOSIXA[:cntrl:]', + '[[:cntrl:][:^cntrl:]]' => 'SANY', + '[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', + '(?l)[[:cntrl:][:^cntrl:]]' => 'SANY', + '(?l)[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', + '(?u)[[:cntrl:][:^cntrl:]]' => 'SANY', + '(?u)[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', + '(?a)[[:cntrl:][:^cntrl:]]' => 'SANY', + '(?a)[^[:cntrl:][:^cntrl:]]' => 'OPFAIL', + '[[:digit:]]' => 'POSIXU[\d]', + '[[:^digit:]]' => 'NPOSIXU[\d]', + '[[:^digit:]\x{2C2}]' => 'NPOSIXU[\d]', + '(?l)[[:digit:]]' => 'POSIXL[\d]', + '(?l)[[:^digit:]]' => 'NPOSIXL[\d]', + '(?l)[[:^digit:]\x{2C2}]' => 'NPOSIXL[\d]', + '(?u)[[:digit:]]' => 'POSIXU[\d]', + '(?u)[[:^digit:]]' => 'NPOSIXU[\d]', + '(?a)[[:digit:]]' => 'POSIXA[\d]', + '(?a)[[:^digit:]]' => 'NPOSIXA[\d]', + '(?a)[[:^digit:]\x{2C2}]' => 'NPOSIXA[\d]', + '[[:digit:][:^digit:]]' => 'SANY', + '[^[:digit:][:^digit:]]' => 'OPFAIL', + '(?l)[[:digit:][:^digit:]]' => 'SANY', + '(?l)[^[:digit:][:^digit:]]' => 'OPFAIL', + '(?u)[[:digit:][:^digit:]]' => 'SANY', + '(?u)[^[:digit:][:^digit:]]' => 'OPFAIL', + '(?a)[[:digit:][:^digit:]]' => 'SANY', + '(?a)[^[:digit:][:^digit:]]' => 'OPFAIL', + '[[:graph:]]' => 'POSIXD[:graph:]', + '[[:^graph:]]' => 'NPOSIXD[:graph:]', + '[[:^graph:]\x{FFFF}]' => 'NPOSIXU[:graph:]', + '(?l)[[:graph:]]' => 'POSIXL[:graph:]', + '(?l)[[:^graph:]]' => 'NPOSIXL[:graph:]', + '(?l)[[:^graph:]\x{FFFF}]' => 'NPOSIXL[:graph:]', + '(?u)[[:graph:]]' => 'POSIXU[:graph:]', + '(?u)[[:^graph:]]' => 'NPOSIXU[:graph:]', + '(?a)[[:graph:]]' => 'POSIXA[:graph:]', + '(?a)[[:^graph:]]' => 'NPOSIXA[:graph:]', + '(?a)[[:^graph:]\x{FFFF}]' => 'NPOSIXA[:graph:]', + '[[:graph:][:^graph:]]' => 'SANY', + '[^[:graph:][:^graph:]]' => 'OPFAIL', + '(?l)[[:graph:][:^graph:]]' => 'SANY', + '(?l)[^[:graph:][:^graph:]]' => 'OPFAIL', + '(?u)[[:graph:][:^graph:]]' => 'SANY', + '(?u)[^[:graph:][:^graph:]]' => 'OPFAIL', + '(?a)[[:graph:][:^graph:]]' => 'SANY', + '(?a)[^[:graph:][:^graph:]]' => 'OPFAIL', + '[[:lower:]]' => 'POSIXD[:lower:]', + '[[:^lower:]]' => 'NPOSIXD[:lower:]', + '[[:^lower:]\x{2C2}]' => 'NPOSIXU[:lower:]', + '(?l)[[:lower:]]' => 'POSIXL[:lower:]', + '(?l)[[:^lower:]]' => 'NPOSIXL[:lower:]', + '(?l)[[:^lower:]\x{2C2}]' => 'NPOSIXL[:lower:]', + '(?u)[[:lower:]]' => 'POSIXU[:lower:]', + '(?u)[[:^lower:]]' => 'NPOSIXU[:lower:]', + '(?a)[[:lower:]]' => 'POSIXA[:lower:]', + '(?a)[[:^lower:]]' => 'NPOSIXA[:lower:]', + '(?a)[[:^lower:]\x{2C2}]' => 'NPOSIXA[:lower:]', + '[[:lower:][:^lower:]]' => 'SANY', + '[^[:lower:][:^lower:]]' => 'OPFAIL', + '(?l)[[:lower:][:^lower:]]' => 'SANY', + '(?l)[^[:lower:][:^lower:]]' => 'OPFAIL', + '(?u)[[:lower:][:^lower:]]' => 'SANY', + '(?u)[^[:lower:][:^lower:]]' => 'OPFAIL', + '(?a)[[:lower:][:^lower:]]' => 'SANY', + '(?a)[^[:lower:][:^lower:]]' => 'OPFAIL', + '[[:print:]]' => 'POSIXD[:print:]', + '[[:^print:]]' => 'NPOSIXD[:print:]', + '[[:^print:]\x{FFFF}]' => 'NPOSIXU[:print:]', + '(?l)[[:print:]]' => 'POSIXL[:print:]', + '(?l)[[:^print:]]' => 'NPOSIXL[:print:]', + '(?l)[[:^print:]\x{FFFF}]' => 'NPOSIXL[:print:]', + '(?u)[[:print:]]' => 'POSIXU[:print:]', + '(?u)[[:^print:]]' => 'NPOSIXU[:print:]', + '(?a)[[:print:]]' => 'POSIXA[:print:]', + '(?a)[[:^print:]]' => 'NPOSIXA[:print:]', + '(?a)[[:^print:]\x{FFFF}]' => 'NPOSIXA[:print:]', + '[[:print:][:^print:]]' => 'SANY', + '[^[:print:][:^print:]]' => 'OPFAIL', + '(?l)[[:print:][:^print:]]' => 'SANY', + '(?l)[^[:print:][:^print:]]' => 'OPFAIL', + '(?u)[[:print:][:^print:]]' => 'SANY', + '(?u)[^[:print:][:^print:]]' => 'OPFAIL', + '(?a)[[:print:][:^print:]]' => 'SANY', + '(?a)[^[:print:][:^print:]]' => 'OPFAIL', + '[[:punct:]]' => 'POSIXD[:punct:]', + '[[:^punct:]]' => 'NPOSIXD[:punct:]', + '[[:^punct:]\x{2C2}]' => 'NPOSIXU[:punct:]', + '(?l)[[:punct:]]' => 'POSIXL[:punct:]', + '(?l)[[:^punct:]]' => 'NPOSIXL[:punct:]', + '(?l)[[:^punct:]\x{2C2}]' => 'NPOSIXL[:punct:]', + '(?u)[[:punct:]]' => 'POSIXU[:punct:]', + '(?u)[[:^punct:]]' => 'NPOSIXU[:punct:]', + '(?a)[[:punct:]]' => 'POSIXA[:punct:]', + '(?a)[[:^punct:]]' => 'NPOSIXA[:punct:]', + '(?a)[[:^punct:]\x{2C2}]' => 'NPOSIXA[:punct:]', + '[[:punct:][:^punct:]]' => 'SANY', + '[^[:punct:][:^punct:]]' => 'OPFAIL', + '(?l)[[:punct:][:^punct:]]' => 'SANY', + '(?l)[^[:punct:][:^punct:]]' => 'OPFAIL', + '(?u)[[:punct:][:^punct:]]' => 'SANY', + '(?u)[^[:punct:][:^punct:]]' => 'OPFAIL', + '(?a)[[:punct:][:^punct:]]' => 'SANY', + '(?a)[^[:punct:][:^punct:]]' => 'OPFAIL', + '[[:space:]]' => 'POSIXD[\s]', + '[[:^space:]]' => 'NPOSIXD[\s]', + '[[:^space:]\x{2C2}]' => 'NPOSIXU[\s]', + '(?l)[[:space:]]' => 'POSIXL[\s]', + '(?l)[[:^space:]]' => 'NPOSIXL[\s]', + '(?l)[[:^space:]\x{2C2}]' => 'NPOSIXL[\s]', + '(?u)[[:space:]]' => 'POSIXU[\s]', + '(?u)[[:^space:]]' => 'NPOSIXU[\s]', + '(?a)[[:space:]]' => 'POSIXA[\s]', + '(?a)[[:^space:]]' => 'NPOSIXA[\s]', + '(?a)[[:^space:]\x{2C2}]' => 'NPOSIXA[\s]', + '[[:space:][:^space:]]' => 'SANY', + '[^[:space:][:^space:]]' => 'OPFAIL', + '(?l)[[:space:][:^space:]]' => 'SANY', + '(?l)[^[:space:][:^space:]]' => 'OPFAIL', + '(?u)[[:space:][:^space:]]' => 'SANY', + '(?u)[^[:space:][:^space:]]' => 'OPFAIL', + '(?a)[[:space:][:^space:]]' => 'SANY', + '(?a)[^[:space:][:^space:]]' => 'OPFAIL', + '[[:upper:]]' => 'POSIXD[:upper:]', + '[[:^upper:]]' => 'NPOSIXD[:upper:]', + '[[:^upper:]\x{2C2}]' => 'NPOSIXU[:upper:]', + '(?l)[[:upper:]]' => 'POSIXL[:upper:]', + '(?l)[[:^upper:]]' => 'NPOSIXL[:upper:]', + '(?l)[[:^upper:]\x{2C2}]' => 'NPOSIXL[:upper:]', + '(?u)[[:upper:]]' => 'POSIXU[:upper:]', + '(?u)[[:^upper:]]' => 'NPOSIXU[:upper:]', + '(?a)[[:upper:]]' => 'POSIXA[:upper:]', + '(?a)[[:^upper:]]' => 'NPOSIXA[:upper:]', + '(?a)[[:^upper:]\x{2C2}]' => 'NPOSIXA[:upper:]', + '[[:upper:][:^upper:]]' => 'SANY', + '[^[:upper:][:^upper:]]' => 'OPFAIL', + '(?l)[[:upper:][:^upper:]]' => 'SANY', + '(?l)[^[:upper:][:^upper:]]' => 'OPFAIL', + '(?u)[[:upper:][:^upper:]]' => 'SANY', + '(?u)[^[:upper:][:^upper:]]' => 'OPFAIL', + '(?a)[[:upper:][:^upper:]]' => 'SANY', + '(?a)[^[:upper:][:^upper:]]' => 'OPFAIL', + '[\v]' => 'POSIXU[\v]', + '[^\v]' => 'NPOSIXU[\v]', + '[\V\x{2C2}]' => 'NPOSIXU[\v]', + '(?l)[\v]' => 'POSIXU[\v]', + '(?l)[^\v]' => 'NPOSIXU[\v]', + '(?l)[\V\x{2C2}]' => 'NPOSIXU[\v]', + '(?u)[\v]' => 'POSIXU[\v]', + '(?u)[^\v]' => 'NPOSIXU[\v]', + '(?a)[\v]' => 'POSIXU[\v]', + '(?a)[^\v]' => 'NPOSIXU[\v]', + '(?a)[\V\x{2C2}]' => 'NPOSIXU[\v]', + '[\v\V]' => 'SANY', + '[^\v\V]' => 'OPFAIL', + '(?l)[\v\V]' => 'SANY', + '(?l)[^\v\V]' => 'OPFAIL', + '(?u)[\v\V]' => 'SANY', + '(?u)[^\v\V]' => 'OPFAIL', + '(?a)[\v\V]' => 'SANY', + '(?a)[^\v\V]' => 'OPFAIL', + '[[:word:]]' => 'POSIXD[\w]', + '[[:^word:]]' => 'NPOSIXD[\w]', + '[[:^word:]\x{2C2}]' => 'NPOSIXU[\w]', + '(?l)[[:word:]]' => 'POSIXL[\w]', + '(?l)[[:^word:]]' => 'NPOSIXL[\w]', + '(?l)[[:^word:]\x{2C2}]' => 'NPOSIXL[\w]', + '(?u)[[:word:]]' => 'POSIXU[\w]', + '(?u)[[:^word:]]' => 'NPOSIXU[\w]', + '(?a)[[:word:]]' => 'POSIXA[\w]', + '(?a)[[:^word:]]' => 'NPOSIXA[\w]', + '(?a)[[:^word:]\x{2C2}]' => 'NPOSIXA[\w]', + '[[:word:][:^word:]]' => 'SANY', + '[^[:word:][:^word:]]' => 'OPFAIL', + '(?l)[[:word:][:^word:]]' => 'SANY', + '(?l)[^[:word:][:^word:]]' => 'OPFAIL', + '(?u)[[:word:][:^word:]]' => 'SANY', + '(?u)[^[:word:][:^word:]]' => 'OPFAIL', + '(?a)[[:word:][:^word:]]' => 'SANY', + '(?a)[^[:word:][:^word:]]' => 'OPFAIL', + '[[:xdigit:]]' => 'POSIXU[:xdigit:]', + '[[:^xdigit:]]' => 'NPOSIXU[:xdigit:]', + '[[:^xdigit:]\x{2C2}]' => 'NPOSIXU[:xdigit:]', + '(?l)[[:xdigit:]]' => 'POSIXL[:xdigit:]', + '(?l)[[:^xdigit:]]' => 'NPOSIXL[:xdigit:]', + '(?l)[[:^xdigit:]\x{2C2}]' => 'NPOSIXL[:xdigit:]', + '(?u)[[:xdigit:]]' => 'POSIXU[:xdigit:]', + '(?u)[[:^xdigit:]]' => 'NPOSIXU[:xdigit:]', + '(?a)[[:xdigit:]]' => 'POSIXA[:xdigit:]', + '(?a)[[:^xdigit:]]' => 'NPOSIXA[:xdigit:]', + '(?a)[[:^xdigit:]\x{2C2}]' => 'NPOSIXA[:xdigit:]', + '[[:xdigit:][:^xdigit:]]' => 'SANY', + '[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', + '(?l)[[:xdigit:][:^xdigit:]]' => 'SANY', + '(?l)[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', + '(?u)[[:xdigit:][:^xdigit:]]' => 'SANY', + '(?u)[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', + '(?a)[[:xdigit:][:^xdigit:]]' => 'SANY', + '(?a)[^[:xdigit:][:^xdigit:]]' => 'OPFAIL', + '(?i)[[:lower:]]' => 'POSIXD[:cased:]', + '(?i)[[:^lower:]]' => 'NPOSIXD[:cased:]', + '(?i)[[:^lower:]\x{2C2}]' => 'NPOSIXU[:cased:]', + '(?i)(?l)[[:lower:]]' => 'POSIXL[:cased:]', + '(?i)(?l)[[:^lower:]]' => 'NPOSIXL[:cased:]', + '(?i)(?l)[[:^lower:]\x{2C2}]' => 'NPOSIXL[:cased:]', + '(?i)(?u)[[:lower:]]' => 'POSIXU[:cased:]', + '(?i)(?u)[[:^lower:]]' => 'NPOSIXU[:cased:]', + '(?i)(?a)[[:lower:]]' => 'POSIXA[:alpha:]', + '(?i)(?a)[[:^lower:]]' => 'NPOSIXA[:alpha:]', + '(?i)(?a)[[:^lower:]\x{2C2}]' => 'NPOSIXA[:alpha:]', + '(?i)[[:upper:]]' => 'POSIXD[:cased:]', + '(?i)[[:^upper:]]' => 'NPOSIXD[:cased:]', + '(?i)[[:^upper:]\x{2C2}]' => 'NPOSIXU[:cased:]', + '(?i)(?l)[[:upper:]]' => 'POSIXL[:cased:]', + '(?i)(?l)[[:^upper:]]' => 'NPOSIXL[:cased:]', + '(?i)(?l)[[:^upper:]\x{2C2}]' => 'NPOSIXL[:cased:]', + '(?i)(?u)[[:upper:]]' => 'POSIXU[:cased:]', + '(?i)(?u)[[:^upper:]]' => 'NPOSIXU[:cased:]', + '(?i)(?a)[[:upper:]]' => 'POSIXA[:alpha:]', + '(?i)(?a)[[:^upper:]]' => 'NPOSIXA[:alpha:]', + '(?i)(?a)[[:^upper:]\x{2C2}]' => 'NPOSIXA[:alpha:]', + '(?i)[\d\w]' => 'POSIXD[\w]', + '(?i)[\D\w]' => 'SANY', + #'(?i)(?l)[\d\w]' => varies depending on Unicode release + '(?i)(?l)[\D\w]' => 'ANYOFPOSIXL{i}[\\w\\D][0100-INFTY]', + '(?i)(?u)[\d\w]' => 'POSIXU[\w]', + '(?i)(?u)[\D\w]' => 'SANY', + '(?i)(?a)[\d\w]' => 'POSIXA[\w]', + '(?i)(?a)[\D\w]' => 'SANY', '(?l:[\x{212A}])' => 'ANYOFL[212A]', - '(?l:[\s\x{212A}])' => 'ANYOFL[\s][1680 2000-200A 2028-2029 202F 205F 212A 3000]', - '(?l:[^\S\x{202F}])' => 'ANYOFL[^\\S][1680 2000-200A 2028-2029 205F 3000]', - '(?i:[^:])' => 'ANYOF[^:][0100-INFINITY]', + '(?l:[\s\x{212A}])' => 'ANYOFPOSIXL[\s][1680 2000-200A 2028-2029 202F 205F 212A 3000]', + '(?l:[^\S\x{202F}])' => 'ANYOFPOSIXL[^\\S][1680 2000-200A 2028-2029 205F 3000]', + '(?li:[a-z])' => 'ANYOFL{i}[a-z{utf8 locale}\x{017F}\x{212A}]', + + '\p{All}' => 'SANY', + '\P{All}' => 'OPFAIL', '[\p{Any}]' => 'ANYOF[\x00-\xFF][0100-10FFFF]', - '[\p{IsMyRuntimeProperty}]' => 'ANYOF[+utf8::IsMyRuntimeProperty]', - '[^\p{IsMyRuntimeProperty}]' => 'ANYOF[^{+utf8::IsMyRuntimeProperty}]', - '[a\p{IsMyRuntimeProperty}]' => 'ANYOF[a][+utf8::IsMyRuntimeProperty]', - '[^a\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+utf8::IsMyRuntimeProperty}]', - '[^a\x{100}\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+utf8::IsMyRuntimeProperty}0100]', - '[{INFINITY_minus_1}]' => 'ANYOF[INFINITY_minus_1]', - '[{INFINITY}]' => 'ANYOF[INFINITY-INFINITY]', - '[\x{102}\x{104}]' => 'ANYOF[0102 0104]', - '[\x{104}\x{102}]' => 'ANYOF[0102 0104]', - '[\x{103}\x{102}]' => 'ANYOF[0102-0103]', - '[\x{00}-{INFINITY_minus_1}]' => 'ANYOF[\x00-\xFF][0100-INFINITY_minus_1]', - '[\x{00}-{INFINITY}]' => 'SANY', - '[\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY_minus_1]', - '[\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]', - '[\x{104}\x{102}\x{103}]' => 'ANYOF[0102-0104]', - '[\x{102}-\x{104}\x{101}]' => 'ANYOF[0101-0104]', - '[\x{102}-\x{104}\x{102}]' => 'ANYOF[0102-0104]', - '[\x{102}-\x{104}\x{103}]' => 'ANYOF[0102-0104]', - '[\x{102}-\x{104}\x{104}]' => 'ANYOF[0102-0104]', - '[\x{102}-\x{104}\x{105}]' => 'ANYOF[0102-0105]', - '[\x{102}-\x{104}\x{106}]' => 'ANYOF[0102-0104 0106]', - '[\x{102}-\x{104}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 INFINITY_minus_1]', - '[\x{102}-\x{104}{INFINITY}]' => 'ANYOF[0102-0104 INFINITY-INFINITY]', - '[\x{102}-\x{104}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]', - '[\x{102}-\x{104}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOF[0101-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOF[0102-0104 0107-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOF[0102-0104 0108-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0108-010A INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}{INFINITY}]' => 'ANYOF[0102-0104 0108-010A INFINITY-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOF[0101-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOF[0101-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOF[0101-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOF[0101-0105 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOF[0101-0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOF[0101-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOF[0101-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOF[0101-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOF[0101-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOF[0101-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOF[0102-0105 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOF[0102-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOF[0102-010C]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOF[0102-0105 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOF[0102-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOF[0102-010C]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOF[0102-0105 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOF[0102-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOF[0102-010C]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOF[0102-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOF[0102-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOF[0102-010C]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOF[0102-0104 0106-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOF[0102-0104 0106-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOF[0102-0104 0106-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOF[0102-0104 0106-010A]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOF[0102-0104 0106-010B]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOF[0102-0104 0106-010C]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY_minus_1]', - '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{10C}-{INFINITY}{INFINITY_minus_1}]' => 'ANYOF[010C-INFINITY]', - '[\x{10C}-{INFINITY}{INFINITY}]' => 'ANYOF[010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}\x{104}]' => 'ANYOF[0102 0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{104}\x{102}]' => 'ANYOF[0102 0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{103}\x{102}]' => 'ANYOF[0102-0103 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{00}-{INFINITY_minus_1}]' => 'SANY', - '[\x{10C}-{INFINITY}\x{00}-{INFINITY}]' => 'SANY', - '[\x{10C}-{INFINITY}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{104}\x{102}\x{103}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}]' => 'ANYOF[0101-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}]' => 'ANYOF[0102-0105 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}]' => 'ANYOF[0102-0104 0106 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}{INFINITY}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOF[0102-0104 0107-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOF[0102-0104 0108-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}{INFINITY}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOF[0101-0105 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOF[0101-0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOF[0101-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOF[0101-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOF[0101-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOF[0101-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]', - '[\x{106}-{INFINITY}\x{104}]' => 'ANYOF[0104 0106-INFINITY]', - '[\x{106}-{INFINITY}\x{105}]' => 'ANYOF[0105-INFINITY]', - '[\x{106}-{INFINITY}\x{106}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{107}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{104}-\x{105}]' => 'ANYOF[0104-INFINITY]', - '[\x{106}-{INFINITY}\x{104}-\x{106}]' => 'ANYOF[0104-INFINITY]', - '[\x{106}-{INFINITY}\x{104}-\x{107}]' => 'ANYOF[0104-INFINITY]', - '[\x{106}-{INFINITY}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0104-INFINITY]', - '[\x{106}-{INFINITY}\x{104}-{INFINITY}]' => 'ANYOF[0104-INFINITY]', - '[\x{106}-{INFINITY}\x{105}-\x{106}]' => 'ANYOF[0105-INFINITY]', - '[\x{106}-{INFINITY}\x{105}-\x{107}]' => 'ANYOF[0105-INFINITY]', - '[\x{106}-{INFINITY}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0105-INFINITY]', - '[\x{106}-{INFINITY}\x{105}-{INFINITY}]' => 'ANYOF[0105-INFINITY]', - '[\x{106}-{INFINITY}\x{106}-\x{107}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{106}-{INFINITY}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{107}-\x{107}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{107}-{INFINITY_minus_1}]' => 'ANYOF[0106-INFINITY]', - '[\x{106}-{INFINITY}\x{107}-{INFINITY}]' => 'ANYOF[0106-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{100}]' => 'ANYOF[0100 0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}]' => 'ANYOF[0101-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}]' => 'ANYOF[0102-0104 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}]' => 'ANYOF[0102-0105 010C-INFINITY]', - '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}]' => 'ANYOF[0102-0104 0106 010C-INFINITY]', + + '[\p{IsMyRuntimeProperty}]' => 'ANYOF[+main::IsMyRuntimeProperty]', + '[^\p{IsMyRuntimeProperty}]' => 'ANYOF[^{+main::IsMyRuntimeProperty}]', + '[a\p{IsMyRuntimeProperty}]' => 'ANYOF[a][+main::IsMyRuntimeProperty]', + '[^a\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+main::IsMyRuntimeProperty}]', + '[^a\x{100}\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+main::IsMyRuntimeProperty}0100]', + '[^\p{All}\p{IsMyRuntimeProperty}]' => 'OPFAIL', + '[\p{All}\p{IsMyRuntimeProperty}]' => 'SANY', + + '[\x{00}-{INFTY_minus_1}]' => 'ANYOF[\x00-\xFF][0100-INFTY_minus_1]', + '[\x{00}-{INFTY}]' => 'SANY', + '(?i)[\x{100}]' => 'ANYOFH[0100-0101]', + '[\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', + '[\x{101}-{INFTY_minus_1}]' => 'ANYOFH[0101-INFTY_minus_1]', + '[\x{102}\x{104}]' => 'ANYOFH[0102 0104]', + '[\x{102}-\x{104}{INFTY}]' => 'ANYOFH[0102-0104 INFTY-INFTY]', + '[\x{102}-\x{104}{INFTY_minus_1}]' => 'ANYOFH[0102-0104 INFTY_minus_1]', + '[\x{102}-\x{104}\x{101}]' => 'ANYOFH[0101-0104]', + '[\x{102}-\x{104}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', + '[\x{102}-\x{104}\x{101}-{INFTY_minus_1}]' => 'ANYOFH[0101-INFTY_minus_1]', + '[\x{102}-\x{104}\x{102}]' => 'ANYOFH[0102-0104]', + '[\x{102}-\x{104}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{102}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{103}]' => 'ANYOFH[0102-0104]', + '[\x{102}-\x{104}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{103}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{104}]' => 'ANYOFH[0102-0104]', + '[\x{102}-\x{104}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{104}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{105}]' => 'ANYOFH[0102-0105]', + '[\x{102}-\x{104}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{105}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{106}]' => 'ANYOFH[0102-0104 0106]', + '[\x{102}-\x{104}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{102}-\x{104}\x{106}-{INFTY_minus_1}]' => 'ANYOFH[0102-0104 0106-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}{INFTY}]' => 'ANYOFH[0102-0104 0108-010A INFTY-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}{INFTY_minus_1}]' => 'ANYOFH[0102-0104 0108-010A INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOFH[0101-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFTY_minus_1}]' => 'ANYOFH[0101-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOFH[0101-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOFH[0101-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOFH[0101-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOFH[0101-0105 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOFH[0101-0106 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOFH[0101-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOFH[0101-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOFH[0101-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOFH[0101-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOFH[0101-010B]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOFH[0102-010B]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOFH[0102-010C]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOFH[0102-010B]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOFH[0102-010C]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOFH[0102-010B]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOFH[0102-010C]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOFH[0102-0105 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOFH[0102-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOFH[0102-010B]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOFH[0102-010C]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOFH[0102-0104 0106 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFTY_minus_1}]' => 'ANYOFH[0102-0104 0106-INFTY_minus_1]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOFH[0102-0104 0106-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOFH[0102-0104 0106-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOFH[0102-0104 0106-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOFH[0102-0104 0106-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOFH[0102-0104 0106-010B]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOFH[0102-0104 0106-010C]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOFH[0102-0104 0107-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOFH[0102-0104 0108-010A]', + '[\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOFH[0102-0104 0108-010B]', + '[\x{103}\x{102}]' => 'ANYOFH[0102-0103]', + '[\x{104}\x{102}]' => 'ANYOFH[0102 0104]', + '[\x{104}\x{102}\x{103}]' => 'ANYOFH[0102-0104]', + '[\x{106}-{INFTY}\x{104}]' => 'ANYOFH[0104 0106-INFTY]', + '[\x{106}-{INFTY}\x{104}-{INFTY}]' => 'ANYOFH[0104-INFTY]', + '[\x{106}-{INFTY}\x{104}-{INFTY_minus_1}]' => 'ANYOFH[0104-INFTY]', + '[\x{106}-{INFTY}\x{104}-\x{105}]' => 'ANYOFH[0104-INFTY]', + '[\x{106}-{INFTY}\x{104}-\x{106}]' => 'ANYOFH[0104-INFTY]', + '[\x{106}-{INFTY}\x{104}-\x{107}]' => 'ANYOFH[0104-INFTY]', + '[\x{106}-{INFTY}\x{105}]' => 'ANYOFH[0105-INFTY]', + '[\x{106}-{INFTY}\x{105}-{INFTY}]' => 'ANYOFH[0105-INFTY]', + '[\x{106}-{INFTY}\x{105}-{INFTY_minus_1}]' => 'ANYOFH[0105-INFTY]', + '[\x{106}-{INFTY}\x{105}-\x{106}]' => 'ANYOFH[0105-INFTY]', + '[\x{106}-{INFTY}\x{105}-\x{107}]' => 'ANYOFH[0105-INFTY]', + '[\x{106}-{INFTY}\x{106}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{106}-{INFTY}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{106}-{INFTY_minus_1}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{106}-\x{107}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{107}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{107}-{INFTY}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{107}-{INFTY_minus_1}]' => 'ANYOFH[0106-INFTY]', + '[\x{106}-{INFTY}\x{107}-\x{107}]' => 'ANYOFH[0106-INFTY]', + '[\x{10C}-{INFTY}{INFTY}]' => 'ANYOFH[010C-INFTY]', + '[\x{10C}-{INFTY}{INFTY_minus_1}]' => 'ANYOFH[010C-INFTY]', + '[\x{10C}-{INFTY}\x{00}-{INFTY_minus_1}]' => 'SANY', + '[\x{10C}-{INFTY}\x{00}-{INFTY}]' => 'SANY', + '[\x{10C}-{INFTY}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{101}-{INFTY_minus_1}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{102}\x{104}]' => 'ANYOFH[0102 0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}{INFTY}]' => 'ANYOFH[0102-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}{INFTY_minus_1}]' => 'ANYOFH[0102-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{100}]' => 'ANYOFH[0100 0102-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{101}]' => 'ANYOFH[0101-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{101}-{INFTY_minus_1}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{102}]' => 'ANYOFH[0102-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{102}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{103}]' => 'ANYOFH[0102-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{103}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{104}]' => 'ANYOFH[0102-0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{104}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{105}]' => 'ANYOFH[0102-0105 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{105}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{106}]' => 'ANYOFH[0102-0104 0106 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{106}-{INFTY_minus_1}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}{INFTY}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}{INFTY_minus_1}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFTY}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFTY_minus_1}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOFH[0101-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOFH[0101-0105 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOFH[0101-0106 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOFH[0101-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOFH[0101-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOFH[0101-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOFH[0101-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOFH[0101-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOFH[0102-0105 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFTY}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFTY_minus_1}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOFH[0102-0106 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOFH[0102-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOFH[0102-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOFH[0102-0104 0106 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFTY}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFTY_minus_1}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOFH[0102-0104 0106-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOFH[0102-0104 0106-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOFH[0102-0104 0107-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOFH[0102-0104 0108-010A 010C-INFTY]', + '[\x{10C}-{INFTY}\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOFH[0102-0104 0108-INFTY]', + '[\x{10C}-{INFTY}\x{103}\x{102}]' => 'ANYOFH[0102-0103 010C-INFTY]', + '[\x{10C}-{INFTY}\x{104}\x{102}]' => 'ANYOFH[0102 0104 010C-INFTY]', + '[\x{10C}-{INFTY}\x{104}\x{102}\x{103}]' => 'ANYOFH[0102-0104 010C-INFTY]', + '[{INFTY_minus_1}]' => 'ANYOFH[INFTY_minus_1]', + '[{INFTY}]' => 'ANYOFH[INFTY-INFTY]', + + '(?8)(?i)[\x{100}]' => 'EXACTFU_ONLY8 <\x{101}>', + '(?8)(?i)[\x{399}]' => 'EXACTFU_ONLY8 <\x{3b9}>', + '(?8)(?i)[\x{345}\x{399}\x{3B9}\x{1FBE}]' => 'EXACTFU_ONLY8 <\x{3b9}>', + '(?i)[\x{2b9}]' => 'ANYOFH[02B9]', # Doesn't participate in a fold + '(?8)(?i)[\x{2b9}]' => 'EXACT_ONLY8 <\x{2b9}>', + '(?i)[\x{2bc}]' => 'EXACTFU_ONLY8 <\x{2bc}>', # Part of a multi-char fold, ASCII component + '(?i)[\x{390}]' => 'EXACTFU_ONLY8 <\x{3b9}\x{308}\x{301}>', # Part of a multi-char fold, no ASCII component + + '(?i)[\x{1E9E}]' => 'EXACTFU <ss>', + '(?iaa)[\x{1E9E}]' => 'EXACTFAA <\x{17f}\x{17f}>', + '(?i)[\x{FB00}]' => 'EXACTFU <ff>', + '(?iaa)[\x{FB00}]' => 'ANYOFH[FB00]', + '(?i)[\x{FB00}]' => 'EXACTFU <ff>', + '(?i)[\x{FB01}]' => 'EXACTFU <fi>', + '(?i)[\x{FB02}]' => 'EXACTFU <fl>', + '(?i)[\x{FB03}]' => 'EXACTFU <ffi>', + '(?i)[\x{FB04}]' => 'EXACTFU <ffl>', + '(?i)[\x{FB05}]' => 'EXACTFU <st>', + '(?i)[\x{FB06}]' => 'EXACTFU <st>', + + '[a][b]' => 'EXACT <ab>', + '[a]\x{100}' => 'EXACT_ONLY8 <a\x{100}>', + '(?8)[\x{100}]a' => 'EXACT_ONLY8 <\x{100}a>', + '(?i)[b][c]' => 'EXACTFU <bc>', + '(?i)[b]\x{100}' => 'EXACTFU_ONLY8 <b\x{101}>', + '(?8)(?i)[\x{100}]b' => 'EXACTFU_ONLY8 <\x{101}b>', + '(?i)b[s]' => 'EXACTFU <bs>', + '(?i)b[s]c' => 'EXACTFU <bsc>', + '(?i)bs[s]c' => 'EXACTF <bss>', # The c goes into a 2nd node + '(?iu)bs[s]c' => 'EXACTFUP <bssc>', + '(?i)b[s]sc' => 'EXACTF <bssc>', + '(?iu)b[s]sc' => 'EXACTFUP <bssc>', + '(?i)[b]st' => 'EXACTFU <bst>', + '(?i)[b]st[s]' => 'EXACTFU <bsts>', + '(?i)[b]st[s]st' => 'EXACTF <bstsst>', + '(?iu)[b]st[s]st' => 'EXACTFUP <bstsst>', + '(?i)[s][s]' => 'EXACTF <ss>', + '(?iu)[s][s]' => 'EXACTFUP <ss>', ); -# 2**32-1 or 2**64-1 -my $highest_cp_string = "F" x (($Config{uvsize} < 8) ? 8 : 16); +my @single_chars_to_test = +( + "\x00", # Always potentially problematic + "\x01", # Unnamed control + "\b", # Named control + "\n", # Potentially special + "\r", # Potentially special + "\cK", # Potentially special + "0", # Digit + ":", # Not in any fold + "A", # ASCII capital, participates in multi-char fold + "a", # ASCII small, participates in multi-char fold + "B", # ASCII capital, participates only in case-pair fold + "b", # ASCII small, participates only in case-pair fold + "K", # ASCII capital, folded to from above Latin1 + "k", # ASCII small, folded to from above Latin1 + "\c?", # Potentially special + "\x80", # Latin1 control + "\xB5", # Micro sign, folds to above Latin1 + "\xC0", # Latin1 capital, participates only in case-pair fold + "\xE0", # Latin1 small, participates only in case-pair fold + "\xC5", # Latin1 capital, folded to from above Latin1 + "\xE5", # Latin1 small, folded to from above Latin1 + "\xDF", # Small sharp S. folds to 'ss' + "\xF7", # Doesn't participate in any fold + "\xFF", # Folded to by above Latin1 + "\x{100}", # First few above Latin1 characters + "\x{101}", + "\x{102}", + "\x{103}", + "\x{104}", + "\x{105}", + "\x{106}", + "\x{107}", + "\x{108}", +); -my $next_highest_cp_string = $highest_cp_string =~ s/ F $ /E/xr; +my @single_tests; +for my $char (@single_chars_to_test) { + my $cp = ord $char; + my $hex = sprintf "%02x", $cp; + my $oct = sprintf "%o", $cp; + my $cp_string; -my $highest_cp = "\\x{$highest_cp_string}"; -my $next_highest_cp = "\\x{$next_highest_cp_string}"; + my $cased; + my $folded_hex; + + { + use feature 'unicode_strings'; + $cased = uc $char ne $char || lc $char ne $char; + $folded_hex = ($cased) + ? sprintf("%02x", ord lc $char) + : $hex; + #print STDERR "$hex, $folded_hex\n"; + } + + for my $fold ("", "i") { + #next unless $fold; + for my $charset ("", "u", "l", "aa") { + #next if $charset eq "aa" && ! $fold; + + my $modifiers = $fold . $charset; + $modifiers = "(?$modifiers)" if $modifiers; + + for my $upgrade ("", "(?8)") { + push @single_tests, "$upgrade$modifiers\[\\x{$hex}\]"; + if ($cp < 256 || $upgrade) { + push @single_tests, get_compiled("$upgrade$modifiers\\x{$hex}"); + } + else { + my $interior = ""; + my @list = $cp; + if ($fold) { + if (lc $char ne $char) { + push @list, ord lc $char; + } + elsif (uc $char ne $char) { + push @list, ord uc $char; + } + } + @list = sort { $a <=> $b } @list; + if (@list == 1) { + $interior = sprintf "%04X", $list[0]; + } + elsif (@list == 2) { + my $separator = ($list[1] == $list[0] + 1) ? '-' : ', '; + $interior = sprintf "%04X$separator%04X", $list[0], $list[1]; + } + else { + die join ", ", @list; + } + my $anyof = ($charset eq "l") ? "ANYOFL" : "ANYOFH"; + push @single_tests, "$anyof\[$interior\]"; + } + } + } + } +} + +unshift @tests, @single_tests; plan(scalar (@tests - 1) / 2); # -1 because of the marker. @@ -331,40 +867,18 @@ while (defined (my $test = shift @tests)) { skip("test not ported to EBCDIC", 1) if $skip_ebcdic; my $display_expected = $expected - =~ s/ INFINITY_minus_1 /$next_highest_cp/xgr; + =~ s/ INFTY_minus_1 /$next_highest_cp/xgr; + my $test_name = "Verify compilation of $test displays as" + . " $display_expected"; - # Convert platform-independent values to what is suitable for the - # platform - $test =~ s/\{INFINITY\}/$highest_cp/g; - $test =~ s/\{INFINITY_minus_1\}/$next_highest_cp/g; - - $test = "qr/$test/"; - my $actual_test = "use re qw(Debug COMPILE); $test"; - - my $result = fresh_perl($actual_test); - if ($? != 0) { # Re-run so as to display STDERR. - fail($test); - fresh_perl($actual_test, { stderr => 0, verbose => 1 }); - next; + my $result = get_compiled($test); + if ($expected =~ / ^ ANYOFH /x) { + like($result, qr/ ^ \Q$expected\E (?:\Q (First UTF-8 byte=\x\E + [[:xdigit:]]{2}\) )? $ /x, $test_name); } - - # The Debug output will come back as a bunch of lines. We are - # interested only in the line after /Final program/ - my @lines = split /\n/, $result; - while (defined ($_ = shift @lines)) { - next unless /Final program/; - $_ = shift @lines; - - s/ \s* \( \d+ \) \s* //x; # Get rid of the node branch - s/ ^ \s* \d+ : \s* //x; # ... And the node number - - # Use platform-independent values - s/$highest_cp_string/INFINITY/g; - s/$next_highest_cp_string/INFINITY_minus_1/g; - - is($_, $expected, - "Verify compilation of $test displays as $display_expected"); - last; # Discard the rest of this test's output + else { + is($result, $expected, + "Verify compilation of $test displays as $test_name"); } } } diff --git a/gnu/usr.bin/perl/t/re/fold_grind.pl b/gnu/usr.bin/perl/t/re/fold_grind.pl new file mode 100644 index 00000000000..fb0d3620e88 --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind.pl @@ -0,0 +1,1058 @@ +# Grind out a lot of combinatoric tests for folding. +# It uses various charset modifiers, passed in via $::TEST_CHUNK. The caller +# will also have set the locale to use if /l is the modifier. +# L is a pseudo-modifier that indicates to use the modifier /l instead, and +# the locale set by the caller is known to be UTF-8, +# T is a pseudo-modifier that indicates to use the pseudo modifier /L +# instead, and the locale set by the caller is known to be Turkic UTF-8, + +binmode STDOUT, ":utf8"; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + set_up_inc('../lib'); + require Config; import Config; + skip_all_if_miniperl("no dynamic loading on miniperl, no Encode nor POSIX"); + if ($^O eq 'dec_osf') { + skip_all("$^O cannot handle this test"); + } + my $time_out_factor = $ENV{PERL_TEST_TIME_OUT_FACTOR} || 1; + $time_out_factor = 1 if $time_out_factor < 1; + + watchdog(5 * 60 * $time_out_factor); + require './loc_tools.pl'; +} + +use charnames ":full"; + +my $DEBUG = 0; # Outputs extra information for debugging this .t + +use strict; +use warnings; +no warnings 'locale'; # Plenty of these would otherwise get generated +use Encode; +use POSIX; + +my $charset = $::TEST_CHUNK; +my $use_turkic_rules = 0; + +if ($charset eq 'T') { + $charset = 'L'; + $use_turkic_rules = 1; +} + +# Special-cased characters in the .c's that we want to make sure get tested. +my %be_sure_to_test = ( + chr utf8::unicode_to_native(0xDF) => 1, # LATIN_SMALL_LETTER_SHARP_S + "\x{1E9E}" => 1, # LATIN_CAPITAL_LETTER_SHARP_S + "\x{390}" => 1, # GREEK_SMALL_LETTER_IOTA_WITH_DIALYTIKA_AND_TONOS + "\x{3B0}" => 1, # GREEK_SMALL_LETTER_UPSILON_WITH_DIALYTIKA_AND_TONOS + "\x{1FD3}" => 1, # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA + "\x{1FE3}" => 1, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA + "I" => 1, +); + +# Tests both unicode and not, so make sure not implicitly testing unicode +no feature 'unicode_strings'; + +# Case-insensitive matching is a large and complicated issue. Perl does not +# implement it fully, properly. For example, it doesn't include normalization +# as part of the equation. To test every conceivable combination is clearly +# impossible; these tests are mostly drawn from visual inspection of the code +# and experience, trying to exercise all areas. + +# There are three basic ranges of characters that Perl may treat differently: +# 1) Invariants under utf8 which on ASCII-ish machines are ASCII, and are +# referred to here as ASCII. On EBCDIC machines, the non-ASCII invariants +# are all controls that fold to themselves. +my $ASCII = 1; + +# 2) Other characters that fit into a byte but are different in utf8 than not; +# here referred to, taking some liberties, as Latin1. +my $Latin1 = 2; + +# 3) Characters that won't fit in a byte; here referred to as Unicode +my $Unicode = 3; + +# Within these basic groups are equivalence classes that testing any character +# in is likely to lead to the same results as any other character. This is +# used to cut down the number of tests needed, unless PERL_RUN_SLOW_TESTS is +# set. +my $skip_apparently_redundant = ! $ENV{PERL_RUN_SLOW_TESTS}; + +# Additionally parts of this test run a lot of subtests, outputting the +# resulting TAP can be expensive so the tests are summarised internally. The +# PERL_DEBUG_FULL_TEST environment variable can be set to produce the full +# output for debugging purposes. + +sub range_type { + my $ord = ord shift; + + return $ASCII if utf8::native_to_unicode($ord) < 128; + return $Latin1 if $ord < 256; + return $Unicode; +} + +sub numerically { + return $a <=> $b +} + +my $list_all_tests = $ENV{PERL_DEBUG_FULL_TEST} || $DEBUG; +$| = 1 if $list_all_tests; + +# Significant time is saved by not outputting each test but grouping the +# output into subtests +my $okays; # Number of ok's in current subtest +my $this_iteration; # Number of possible tests in current subtest +my $count = 0; # Number of subtests = number of total tests + +sub run_test($$$$) { + my ($test, $todo, $do_we_output_locale_name, $debug) = @_; + + $debug = "" unless $DEBUG; + my $res = eval $test; + + if ($do_we_output_locale_name) { + $do_we_output_locale_name = 'setlocale(LC_CTYPE, "' + . POSIX::setlocale(&POSIX::LC_CTYPE) + . '"); '; + } + if (!$res || $list_all_tests) { + # Failed or debug; output the result + $count++; + ok($res, "$do_we_output_locale_name$test; $debug"); + } else { + # Just count the test as passed + $okays++; + } + $this_iteration++; +} + +my %has_test_by_participants; # Makes sure has tests for each range and each + # number of characters that fold to the same + # thing +my %has_test_by_byte_count; # Makes sure has tests for each combination of + # n bytes folds to m bytes + +my %tests; # The set of tests we expect to pass. +# Each key is a code point that folds to something else. +# Each value is a list of things that the key folds to. If the 'thing' is a +# single code point, it is that ordinal. If it is a multi-char fold, it is an +# ordered list of the code points in that fold. Here's an example for 'S': +# '83' => [ 115, 383 ] +# +# And one for a multi-char fold: \xDF +# 223 => [ +# [ # 'ss' +# 83, +# 83 +# ], +# [ # 'SS' +# 115, +# 115 +# ], +# [ # LATIN SMALL LETTER LONG S +# 383, +# 383 +# ], +# 7838 # LATIN_CAPITAL_LETTER_SHARP_S +# ], + +my %neg_tests; # Same format, but we expect these tests to fail + +my %folds; # keys are code points that fold; values are either 0 or 1 which + # in turn are keys with their values each a list of code points the + # code point key folds to. The folds under 1 are the ones that are + # valid in this run; the ones under 0 are ones valid under other + # circumstances. + +my %inverse_folds; # keys are strings of the folded-to; then come a layer of + # 0 or 1, like %folds. The lowest values are lists of + # characters that fold to them + +# Here's a portion of an %inverse_folds in a run where Turkic folds are not +# legal, so \x{130} doesn't fold to 'i' in this run. +# 'h' => { +# '1' => [ +# 'H' +# ] +# }, +# "h\x{331}" => { +# '1' => [ +# "\x{1e96}" +# ] +# }, +# 'i' => { +# '0' => [ +# "\x{130}" +# ], +# '1' => [ +# 'I' +# ] +# }, +# "i\x{307}" => { +# '1' => [ +# "\x{130}" +# ] +# }, +# 'j' => { +# '1' => [ +# 'J' +# ] +# }, + +sub add_test($$@) { + my ($tests_ref, $to, @from) = @_; + + # Called to cause the input to be tested by adding to $%tests_ref. @from + # is the list of characters that fold to the string $to. @from should be + # sorted so the lowest code point is first.... + # The input is in string form; %tests uses code points, so have to + # convert. + + my $to_chars = length $to; + my @test_to; # List of tests for $to + + if ($to_chars == 1) { + @test_to = ord $to; + } + else { + push @test_to, [ map { ord $_ } split "", $to ]; + + # For multi-char folds, we also test that things that can fold to each + # individual character in the fold also work. If we were testing + # comprehensively, we would try every combination of upper and lower + # case in the fold, but it will have to suffice to avoid running + # forever to make sure that each thing that folds to these is tested + # at least once. Because of complement matching ([^...]), we need to + # do both the folded, and the folded-from. + # We first look at each character in the multi-char fold, and save how + # many characters fold to it; and also the maximum number of such + # folds + my @folds_to_count; # 0th char in fold is index 0 ... + my $max_folds_to = 0; + + for (my $i = 0; $i < $to_chars; $i++) { + my $to_char = substr($to, $i, 1); + if (exists $inverse_folds{$to_char}{1}) { + $folds_to_count[$i] = scalar @{$inverse_folds{$to_char}{1}}; + $max_folds_to = $folds_to_count[$i] if $max_folds_to < $folds_to_count[$i]; + } + else { + $folds_to_count[$i] = 0; + } + } + + # We will need to generate as many tests as the maximum number of + # folds, so that each fold will have at least one test. + # For example, consider character X which folds to the three character + # string 'xyz'. If 2 things fold to x (X and x), 4 to y (Y, Y' + # (Y-prime), Y'' (Y-prime-prime), and y), and 1 thing to z (itself), 4 + # tests will be generated: + # xyz + # XYz + # xY'z + # xY''z + for (my $i = 0; $i < $max_folds_to; $i++) { + my @this_test_to; # Assemble a single test + + # For each character in the multi-char fold ... + for (my $j = 0; $j < $to_chars; $j++) { + my $this_char = substr($to, $j, 1); + + # Use its corresponding inverse fold, if available. + if ( $i < $folds_to_count[$j] + && exists $inverse_folds{$this_char}{1}) + { + push @this_test_to, ord $inverse_folds{$this_char}{1}[$i]; + } + else { # Or else itself. + push @this_test_to, ord $this_char; + } + } + + # Add this test to the list + push @test_to, [ @this_test_to ]; + } + + # Here, have assembled all the tests for the multi-char fold. Sort so + # lowest code points are first for consistency and aesthetics in + # output. We know there are at least two characters in the fold, but + # I haven't bothered to worry about sorting on an optional third + # character if the first two are identical. + @test_to = sort { ($a->[0] == $b->[0]) + ? $a->[1] <=> $b->[1] + : $a->[0] <=> $b->[0] + } @test_to; + } + + + # This test is from n bytes to m bytes. Record that so won't try to add + # another test that does the same. + use bytes; + my $to_bytes = length $to; + foreach my $from_map (@from) { + $has_test_by_byte_count{length $from_map}{$to_bytes} = $to; + } + no bytes; + + my $ord_smallest_from = ord shift @from; + if (exists $tests_ref->{$ord_smallest_from}) { + die "There are already tests for $ord_smallest_from" + }; + + # Add in the fold tests, + push @{$tests_ref->{$ord_smallest_from}}, @test_to; + + # Then any remaining froms in the equivalence class. + push @{$tests_ref->{$ord_smallest_from}}, map { ord $_ } @from; +} + +# Get the Unicode rules and construct inverse mappings from them + +use Unicode::UCD; +my $file="../lib/unicore/CaseFolding.txt"; + +# Use the Unicode data file if we are on an ASCII platform (which its data is +# for), and it is in the modern format (starting in Unicode 3.1.0) and it is +# available. This avoids being affected by potential bugs introduced by other +# layers of Perl +if ($::IS_ASCII + && pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v3.1.0 + && open my $fh, "<", $file) +{ + # We process the file in reverse order because its easier to see the T + # entry first and then know that the next line we process is the + # corresponding one for non-T. + my @rules = <$fh>; + my $prev_was_turkic = 0; + while (defined ($_ = pop @rules)) { + chomp; + + # Lines look like (though without the initial '#') + #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE + + # Get rid of comments, ignore blank or comment-only lines + my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx; + next unless length $line; + my ($hex_from, $fold_type, @hex_folded) = split /[\s;]+/, $line; + + next if $fold_type eq 'S'; # If Unicode's tables are correct, the F + # should be a superset of S + next if $fold_type eq 'I'; # Perl doesn't do old Turkish folding + + my $test_type; + if ($fold_type eq 'T') { + $test_type = 0 + $use_turkic_rules; + $prev_was_turkic = 1; + } + elsif ($prev_was_turkic) { + $test_type = 0 + ! $use_turkic_rules; + $prev_was_turkic = 0; + } + else { + $test_type = 1; + $prev_was_turkic = 0; + } + + my $from = hex $hex_from; + my @to = map { hex $_ } @hex_folded; + push @{$folds{$from}{$test_type}}, @to; + + my $folded_str = pack ("U0U*", @to); + push @{$inverse_folds{$folded_str}{$test_type}}, chr $from; + } +} +else { # Here, can't use the .txt file: read the Unicode rules file and + # construct inverse mappings from it + + skip_all "Don't know how to generate turkic rules on this platform" + if $use_turkic_rules; + my ($invlist_ref, $invmap_ref, undef, $default) + = Unicode::UCD::prop_invmap('Case_Folding'); + for my $i (0 .. @$invlist_ref - 1 - 1) { + next if $invmap_ref->[$i] == $default; + + # Make into an array if not so already, so can treat uniformly below + $invmap_ref->[$i] = [ $invmap_ref->[$i] ] if ! ref $invmap_ref->[$i]; + + # Each subsequent element of the range requires adjustment of +1 from + # the previous element + my $adjust = -1; + for my $j ($invlist_ref->[$i] .. $invlist_ref->[$i+1] -1) { + $adjust++; + my @to = map { $_ + $adjust } @{$invmap_ref->[$i]}; + push @{$folds{$j}{1}}, @to; + my $folded_str = join "", map { chr } @to; + utf8::upgrade($folded_str); + #note (sprintf "%d: %04X: %s", __LINE__, $j, join " ", + # map { sprintf "%04X", $_ + $adjust } @{$invmap_ref->[$i]}); + push @{$inverse_folds{$folded_str}{1}}, chr $j; + } + } +} + +# Analyze the data and generate tests to get adequate test coverage. We sort +# things so that smallest code points are done first. +foreach my $to (sort { $a cmp $b } keys %inverse_folds) +{ +TO: + foreach my $tests_ref (\%tests, \%neg_tests) { + my $test_type = ($tests_ref == \%tests) ? 1 : 0; + + next unless exists $inverse_folds{$to}{$test_type}; + + # Within each fold, sort so that the smallest code points are done first + @{$inverse_folds{$to}{$test_type}} = sort { $a cmp $b } @{$inverse_folds{$to}{$test_type}}; + my @from = @{$inverse_folds{$to}{$test_type}}; + + # Just add it to the tests if doing complete coverage + if (! $skip_apparently_redundant) { + add_test($tests_ref, $to, @from); + next TO; + } + + my $to_chars = length $to; + my $to_range_type = range_type(substr($to, 0, 1)); + + # If this is required to be tested, do so. We check for these first, as + # they will take up slots of byte-to-byte combinations that we otherwise + # would have to have other tests to get. + foreach my $from_map (@from) { + if (exists $be_sure_to_test{$from_map}) { + add_test($tests_ref, $to, @from); + next TO; + } + } + + # If the fold contains heterogeneous range types, is suspect and should be + # tested. + if ($to_chars > 1) { + foreach my $char (split "", $to) { + if (range_type($char) != $to_range_type) { + add_test($tests_ref, $to, @from); + next TO; + } + } + } + + # If the mapping crosses range types, is suspect and should be tested + foreach my $from_map (@from) { + if (range_type($from_map) != $to_range_type) { + add_test($tests_ref, $to, @from); + next TO; + } + } + + # Here, all components of the mapping are in the same range type. For + # single character folds, we test one case in each range type that has 2 + # particpants, 3 particpants, etc. + if ($to_chars == 1) { + if (! exists $has_test_by_participants{scalar @from}{$to_range_type}) { + add_test($tests_ref, $to, @from); + $has_test_by_participants{scalar @from}{$to_range_type} = $to; + next TO; + } + } + + # We also test all combinations of mappings from m to n bytes. This is + # because the regex optimizer cares. (Don't bother worrying about that + # Latin1 chars will occupy a different number of bytes under utf8, as + # there are plenty of other cases that catch these byte numbers.) + use bytes; + my $to_bytes = length $to; + foreach my $from_map (@from) { + if (! exists $has_test_by_byte_count{length $from_map}{$to_bytes}) { + add_test($tests_ref, $to, @from); + next TO; + } + } + } +} + +# For each range type, test additionally a character that folds to itself +add_test(\%tests, ":", ":"); +add_test(\%tests, chr utf8::unicode_to_native(0xF7), chr utf8::unicode_to_native(0xF7)); +add_test(\%tests, chr 0x2C7, chr 0x2C7); + +# To cut down on the number of tests +my $has_tested_aa_above_latin1; +my $has_tested_latin1_aa; +my $has_tested_ascii_aa; +my $has_tested_l_above_latin1; +my $has_tested_above_latin1_l; +my $has_tested_ascii_l; +my $has_tested_above_latin1_d; +my $has_tested_ascii_d; +my $has_tested_non_latin1_d; +my $has_tested_above_latin1_a; +my $has_tested_ascii_a; +my $has_tested_non_latin1_a; + +# For use by pairs() in generating combinations +sub prefix { + my $p = shift; + map [ $p, $_ ], @_ +} + +# Returns all ordered combinations of pairs of elements from the input array. +# It doesn't return pairs like (a, a), (b, b). Change the slice to an array +# to do that. This was just to have fewer tests. +sub pairs (@) { + #print STDERR __LINE__, ": ", join(" XXX ", map { sprintf "%04X", $_ } @_), "\n"; + map { prefix $_[$_], @_[0..$_-1, $_+1..$#_] } 0..$#_ +} + +# Finally ready to do the tests +foreach my $tests_ref (\%neg_tests, \%tests) { +foreach my $test (sort { numerically } keys %{$tests_ref}) { + + my $previous_target; + my $previous_pattern; + my @pairs = pairs(sort numerically $test, @{$tests_ref->{$test}}); + + # Each fold can be viewed as a closure of all the characters that + # participate in it. Look at each possible pairing from a closure, with the + # first member of the pair the target string to match against, and the + # second member forming the pattern. Thus each fold member gets tested as + # the string, and the pattern with every other member in the opposite role. + while (my $pair = shift @pairs) { + my ($target, $pattern) = @$pair; + + # When testing a char that doesn't fold, we can get the same + # permutation twice; so skip all but the first. + next if $previous_target + && $previous_target == $target + && $previous_pattern == $pattern; + ($previous_target, $previous_pattern) = ($target, $pattern); + + # Each side may be either a single char or a string. Extract each into an + # array (perhaps of length 1) + my @target, my @pattern; + @target = (ref $target) ? @$target : $target; + @pattern = (ref $pattern) ? @$pattern : $pattern; + + # We are testing just folds to/from a single character. If our pairs + # happens to generate multi/multi, skip. + next if @target > 1 && @pattern > 1; + + # Get in hex form. + my @x_target = map { sprintf "\\x{%04X}", $_ } @target; + my @x_pattern = map { sprintf "\\x{%04X}", $_ } @pattern; + + my $target_above_latin1 = grep { $_ > 255 } @target; + my $pattern_above_latin1 = grep { $_ > 255 } @pattern; + my $target_has_ascii = grep { utf8::native_to_unicode($_) < 128 } @target; + my $pattern_has_ascii = grep { utf8::native_to_unicode($_) < 128 } @pattern; + my $target_only_ascii = ! grep { utf8::native_to_unicode($_) > 127 } @target; + my $pattern_only_ascii = ! grep { utf8::native_to_unicode($_) > 127 } @pattern; + my $target_has_latin1 = grep { $_ < 256 } @target; + my $target_has_upper_latin1 + = grep { $_ < 256 && utf8::native_to_unicode($_) > 127 } @target; + my $pattern_has_upper_latin1 + = grep { $_ < 256 && utf8::native_to_unicode($_) > 127 } @pattern; + my $pattern_has_latin1 = grep { $_ < 256 } @pattern; + my $is_self = @target == 1 && @pattern == 1 && $target[0] == $pattern[0]; + + # We don't test multi-char folding into other multi-chars. We are testing + # a code point that folds to or from other characters. Find the single + # code point for diagnostic purposes. (If both are single, choose the + # target string) + my $ord = @target == 1 ? $target[0] : $pattern[0]; + my $progress = sprintf "%04X: \"%s\" and /%s/", + $test, + join("", @x_target), + join("", @x_pattern); + #note $progress; + + # Now grind out tests, using various combinations. + { + my $charset_mod = lc $charset; + my $current_locale = setlocale(&POSIX::LC_CTYPE); + $current_locale = 'C locale' if $current_locale eq 'C'; + $okays = 0; + $this_iteration = 0; + + # To cut down somewhat on the enormous quantity of tests this currently + # runs, skip some for some of the character sets whose results aren't + # likely to differ from others. But run all tests on the code points + # that don't fold, plus one other set in each range group. + if (! $is_self) { + + # /aa should only affect things with folds in the ASCII range. But, try + # it on one set in the other ranges just to make sure it doesn't break + # them. + if ($charset eq 'aa') { + + # It may be that this $pair of code points to test are both + # non-ascii, but if either of them actually fold to ascii, that is + # suspect and should be tested. So for /aa, use whether their folds + # are ascii or not + my $target_has_ascii = $target_has_ascii; + my $pattern_has_ascii = $pattern_has_ascii; + if (! $target_has_ascii) { + foreach my $cp (@target) { + if (exists $folds{$cp}{1} + && grep { utf8::native_to_unicode($_) < 128 } @{$folds{$cp}{1}} ) + { + $target_has_ascii = 1; + last; + } + } + } + if (! $pattern_has_ascii) { + foreach my $cp (@pattern) { + if (exists $folds{$cp}{1} + && grep { utf8::native_to_unicode($_) < 128 } @{$folds{$cp}}{1} ) + { + $pattern_has_ascii = 1; + last; + } + } + } + + if (! $target_has_ascii && ! $pattern_has_ascii) { + if ($target_above_latin1 || $pattern_above_latin1) { + next if defined $has_tested_aa_above_latin1 + && $has_tested_aa_above_latin1 != $test; + $has_tested_aa_above_latin1 = $test; + } + next if defined $has_tested_latin1_aa + && $has_tested_latin1_aa != $test; + $has_tested_latin1_aa = $test; + } + elsif ($target_only_ascii && $pattern_only_ascii) { + + # And, except for one set just to make sure, skip tests + # where both elements in the pair are ASCII. If one works for + # aa, the others are likely too. This skips tests where the + # fold is from non-ASCII to ASCII, but this part of the test + # is just about the ASCII components. + next if defined $has_tested_ascii_l + && $has_tested_ascii_l != $test; + $has_tested_ascii_l = $test; + } + } + elsif ($charset eq 'l') { + + # For l, don't need to test beyond one set those things that are + # all above latin1, because unlikely to have different successes + # than /u. But, for the same reason as described in the /aa above, + # it is suspect and should be tested, if either of the folds are to + # latin1. + my $target_has_latin1 = $target_has_latin1; + my $pattern_has_latin1 = $pattern_has_latin1; + if (! $target_has_latin1) { + foreach my $cp (@target) { + if (exists $folds{$cp}{1} + && grep { $_ < 256 } @{$folds{$cp}{1}} ) + { + $target_has_latin1 = 1; + last; + } + } + } + if (! $pattern_has_latin1) { + foreach my $cp (@pattern) { + if (exists $folds{$cp}{1} + && grep { $_ < 256 } @{$folds{$cp}{1}} ) + { + $pattern_has_latin1 = 1; + last; + } + } + } + if (! $target_has_latin1 && ! $pattern_has_latin1) { + next if defined $has_tested_above_latin1_l + && $has_tested_above_latin1_l != $test; + $has_tested_above_latin1_l = $test; + } + elsif ($target_only_ascii && $pattern_only_ascii) { + + # And, except for one set just to make sure, skip tests + # where both elements in the pair are ASCII. This is + # essentially the same reasoning as above for /aa. + next if defined $has_tested_ascii_l + && $has_tested_ascii_l != $test; + $has_tested_ascii_l = $test; + } + } + elsif ($charset eq 'd') { + # Similarly for d. Beyond one test (besides self) each, we don't + # test pairs that are both ascii; or both above latin1, or are + # combinations of ascii and above latin1. + if (! $target_has_upper_latin1 && ! $pattern_has_upper_latin1) { + if ($target_has_ascii && $pattern_has_ascii) { + next if defined $has_tested_ascii_d + && $has_tested_ascii_d != $test; + $has_tested_ascii_d = $test + } + elsif (! $target_has_latin1 && ! $pattern_has_latin1) { + next if defined $has_tested_above_latin1_d + && $has_tested_above_latin1_d != $test; + $has_tested_above_latin1_d = $test; + } + else { + next if defined $has_tested_non_latin1_d + && $has_tested_non_latin1_d != $test; + $has_tested_non_latin1_d = $test; + } + } + } + elsif ($charset eq 'a') { + # Similarly for a. This should match identically to /u, so wasn't + # tested at all until a bug was found that was thereby missed. + # As a compromise, beyond one test (besides self) each, we don't + # test pairs that are both ascii; or both above latin1, or are + # combinations of ascii and above latin1. + if (! $target_has_upper_latin1 && ! $pattern_has_upper_latin1) { + if ($target_has_ascii && $pattern_has_ascii) { + next if defined $has_tested_ascii_a + && $has_tested_ascii_a != $test; + $has_tested_ascii_a = $test + } + elsif (! $target_has_latin1 && ! $pattern_has_latin1) { + next if defined $has_tested_above_latin1_a + && $has_tested_above_latin1_a != $test; + $has_tested_above_latin1_a = $test; + } + else { + next if defined $has_tested_non_latin1_a + && $has_tested_non_latin1_a != $test; + $has_tested_non_latin1_a = $test; + } + } + } + } + + foreach my $utf8_target (0, 1) { # Both utf8 and not, for + # code points < 256 + my $upgrade_target = ""; + + # These must already be in utf8 because the string to match has + # something above latin1. So impossible to test if to not to be in + # utf8; and otherwise, no upgrade is needed. + next if $target_above_latin1 && ! $utf8_target; + $upgrade_target = ' utf8::upgrade($c);' if ! $target_above_latin1 && $utf8_target; + + foreach my $utf8_pattern (0, 1) { + next if $pattern_above_latin1 && ! $utf8_pattern; + + # Our testing of 'l' uses the POSIX locale, which is ASCII-only + my $uni_semantics = $charset ne 'l' && ( $utf8_target + || $charset eq 'u' + || $charset eq 'L' + || ($charset eq 'd' && $utf8_pattern) + || $charset =~ /a/); + my $upgrade_pattern = ""; + $upgrade_pattern = ' utf8::upgrade($p);' if ! $pattern_above_latin1 && $utf8_pattern; + + my $lhs = join "", @x_target; + my $lhs_str = eval qq{"$lhs"}; fail($@) if $@; + my @rhs = @x_pattern; + my $rhs = join "", @rhs; + + # Unicode created a folding rule that partially emulates what + # happens in a Turkish locale, by using combining characters. The + # result is close enough to what really should happen, that it can + # pass many of the tests, but not all. So, if we have a rule that + # is expecting failure, it may pass instead. The code in the block + # below is good enough for skipping the tests, and khw tried to make + # it general, but should the rules be revised (unlikely at this + # point), this might need to be tweaked. + if ($tests_ref == \%neg_tests) { + my ($shorter_ref, $longer_ref); + + # Convert the $rhs to a string, like we already did for the lhs + my $rhs_str = eval qq{"$rhs"}; fail($@) if $@; + + # If the lengths of the two sides are equal, we don't want to do + # this; this is only to bypass the combining characters affecting + # things + if (length $lhs_str != length $rhs_str) { + + # Find the shorter and longer of the pair + if (length $lhs_str < length $rhs_str) { + $shorter_ref = \$lhs_str; + $longer_ref = \$rhs_str; + } + else { + $shorter_ref = \$rhs_str; + $longer_ref = \$lhs_str; + } + + # If the shorter string is entirely contained in the longer, we + # have generated a test that is likely to succeed, and the + # reasons it would fail have nothing to do with folding. But we + # are expecting it to fail, and so our test is invalid. Skip + # it. + next if index($$longer_ref, $$shorter_ref) >= 0; + + + # The above eliminates about half the failure cases. This gets + # the rest. If the shorter string is a single character and has + # a fold legal in this run to a character that is in the longer + # string, it is also likely to succeed under /i. So again our + # computed test is bogus. + if ( length $$shorter_ref == 1 + && exists $folds{ord $$shorter_ref}{1}) + { + my @folded_to = @{$folds{ord $$shorter_ref}{1}}; + next if @folded_to == 1 + && index($$longer_ref, chr $folded_to[0]) >= 0; + } + } + } + + my $should_fail = (! $uni_semantics && $ord < 256 && ! $is_self && utf8::native_to_unicode($ord) >= 128) + || ($charset eq 'aa' && $target_has_ascii != $pattern_has_ascii) + || ($charset eq 'l' && $target_has_latin1 != $pattern_has_latin1) + || $tests_ref == \%neg_tests; + + # Do simple tests of referencing capture buffers, named and + # numbered. + my $op = '=~'; + $op = '!~' if $should_fail; + + my $todo = 0; # No longer any todo's + my $eval = "my \$c = \"$lhs$rhs\"; my \$p = qr/(?$charset_mod:^($rhs)\\1\$)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, $todo, ($charset_mod eq 'l'), ""); + + $eval = "my \$c = \"$lhs$rhs\"; my \$p = qr/(?$charset_mod:^(?<grind>$rhs)\\k<grind>\$)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, $todo, ($charset_mod eq 'l'), ""); + + if ($lhs ne $rhs) { + $eval = "my \$c = \"$rhs$lhs\"; my \$p = qr/(?$charset_mod:^($rhs)\\1\$)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, "", ($charset_mod eq 'l'), ""); + + $eval = "my \$c = \"$rhs$lhs\"; my \$p = qr/(?$charset_mod:^(?<grind>$rhs)\\k<grind>\$)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, "", ($charset_mod eq 'l'), ""); + } + + # See if works on what could be a simple trie. + my $alternate; + { + # Keep the alternate | branch the same length as the tested one so + # that it's length doesn't influence things + my $evaled = eval "\"$rhs\""; # Convert e.g. \x{foo} into its + # chr equivalent + use bytes; + $alternate = 'q' x length $evaled; + } + $eval = "my \$c = \"$lhs\"; my \$p = qr/$rhs|$alternate/i$charset_mod;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, "", ($charset_mod eq 'l'), ""); + + # Check that works when the folded character follows something that + # is quantified. This test knows the regex code internals to the + # extent that it knows this is a potential problem, and that there + # are three different types of quantifiers generated: 1) The thing + # being quantified matches a single character; 2) it matches more + # than one character, but is fixed width; 3) it can match a variable + # number of characters. (It doesn't know that case 3 shouldn't + # matter, since it doesn't do anything special for the character + # following the quantifier; nor that some of the different + # quantifiers execute the same underlying code, as these tests are + # quick, and this insulates these tests from changes in the + # implementation.) + for my $quantifier ('?', '??', '*', '*?', '+', '+?', '{1,2}', '{1,2}?') { + $eval = "my \$c = \"_$lhs\"; my \$p = qr/(?$charset_mod:.$quantifier$rhs)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, "", ($charset_mod eq 'l'), ""); + $eval = "my \$c = \"__$lhs\"; my \$p = qr/(?$charset_mod:(?:..)$quantifier$rhs)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, "", ($charset_mod eq 'l'), ""); + $eval = "my \$c = \"__$lhs\"; my \$p = qr/(?$charset_mod:(?:.|\\R)$quantifier$rhs)/i;$upgrade_target$upgrade_pattern \$c $op \$p"; + run_test($eval, "", ($charset_mod eq 'l'), ""); + } + + foreach my $bracketed (0, 1) { # Put rhs in [...], or not + next if $bracketed && @pattern != 1; # bracketed makes these + # or's instead of a sequence + foreach my $optimize_bracketed (0, 1) { + next if $optimize_bracketed && ! $bracketed; + foreach my $inverted (0,1) { + next if $inverted && ! $bracketed; # inversion only valid + # in [^...] + next if $inverted && @target != 1; # [perl #89750] multi-char + # not valid in [^...] + + # In some cases, add an extra character that doesn't fold, and + # looks ok in the output. + my $extra_char = "_"; + foreach my $prepend ("", $extra_char) { + foreach my $append ("", $extra_char) { + + # Assemble the rhs. Put each character in a separate + # bracketed if using charclasses. This creates a stress on + # the code to span a match across multiple elements + my $rhs = ""; + foreach my $rhs_char (@rhs) { + $rhs .= '[' if $bracketed; + $rhs .= '^' if $inverted; + $rhs .= $rhs_char; + + # Add a character to the class, so class doesn't get + # optimized out, unless we are testing that optimization + $rhs .= '_' if $optimize_bracketed; + $rhs .= ']' if $bracketed; + } + + # Add one of: no capturing parens + # a single set + # a nested set + # Use quantifiers and extra variable width matches inside + # them to keep some optimizations from happening + foreach my $parend (0, 1, 2) { + my $interior = (! $parend) + ? $rhs + : ($parend == 1) + ? "(${rhs},?)" + : "((${rhs})+,?)"; + foreach my $quantifier ("", '?', '*', '+', '{1,3}') { + + # Perhaps should be TODOs, as are unimplemented, but + # maybe will never be implemented + next if @pattern != 1 && $quantifier; + + # A ? or * quantifier normally causes the thing to be + # able to match a null string + my $quantifier_can_match_null = $quantifier eq '?' + || $quantifier eq '*'; + + # But since we only quantify the last character in a + # multiple fold, the other characters will have width, + # except if we are quantifying the whole rhs + my $can_match_null = $quantifier_can_match_null + && (@rhs == 1 || $parend); + + foreach my $l_anchor ("", '^') { # '\A' didn't change + # result) + foreach my $r_anchor ("", '$') { # '\Z', '\z' didn't + # change result) + # The folded part can match the null string if it + # isn't required to have width, and there's not + # something on one or both sides that force it to. + my $both_sides = ($l_anchor && $r_anchor) + || ($l_anchor && $append) + || ($r_anchor && $prepend) + || ($prepend && $append); + my $must_match = ! $can_match_null || $both_sides; + # for performance, but doing this missed many failures + #next unless $must_match; + my $quantified = "(?$charset_mod:$l_anchor$prepend$interior${quantifier}$append$r_anchor)"; + my $op; + if ($must_match && $should_fail) { + $op = 0; + } else { + $op = 1; + } + $op = ! $op if $must_match && $inverted; + + if ($inverted && @target > 1) { + # When doing an inverted match against a + # multi-char target, and there is not something on + # the left to anchor the match, if it shouldn't + # succeed, skip, as what will happen (when working + # correctly) is that it will match the first + # position correctly, and then be inverted to not + # match; then it will go to the second position + # where it won't match, but get inverted to match, + # and hence succeeding. + next if ! ($l_anchor || $prepend) && ! $op; + + # Can't ever match for latin1 code points non-uni + # semantics that have a inverted multi-char fold + # when there is something on both sides and the + # quantifier isn't such as to span the required + # width, which is 2 or 3. + $op = 0 if $ord < 255 + && ! $uni_semantics + && $both_sides + && ( ! $quantifier || $quantifier eq '?') + && $parend < 2; + + # Similarly can't ever match when inverting a + # multi-char fold for /aa and the quantifier + # isn't sufficient to allow it to span to both + # sides. + $op = 0 if $target_has_ascii + && $charset eq 'aa' + && $both_sides + && ( ! $quantifier || $quantifier eq '?') + && $parend < 2; + + # Or for /l + $op = 0 if $target_has_latin1 && $charset eq 'l' + && $both_sides + && ( ! $quantifier || $quantifier eq '?') + && $parend < 2; + } + + + my $desc = ""; + if ($charset_mod eq 'l') { + $desc .= 'setlocale(LC_CTYPE, "' + . POSIX::setlocale(&POSIX::LC_CTYPE) + . '"); ' + } + $desc .= "my \$c = \"$prepend$lhs$append\"; " + . "my \$p = qr/$quantified/i;" + . "$upgrade_target$upgrade_pattern " + . "\$c " . ($op ? "=~" : "!~") . " \$p; "; + if ($DEBUG) { + $desc .= ( + "; uni_semantics=$uni_semantics, " + . "should_fail=$should_fail, " + . "bracketed=$bracketed, " + . "prepend=$prepend, " + . "append=$append, " + . "parend=$parend, " + . "quantifier=$quantifier, " + . "l_anchor=$l_anchor, " + . "r_anchor=$r_anchor; " + . "pattern_above_latin1=$pattern_above_latin1; " + . "utf8_pattern=$utf8_pattern" + ); + } + + my $c = "$prepend$lhs_str$append"; + my $p = qr/$quantified/i; + utf8::upgrade($c) if length($upgrade_target); + utf8::upgrade($p) if length($upgrade_pattern); + my $res = $op ? ($c =~ $p): ($c !~ $p); + + if (!$res || $list_all_tests) { + # Failed or debug; output the result + $count++; + ok($res, "test $count - $desc"); + } else { + # Just count the test as passed + $okays++; + } + $this_iteration++; + } + } + } + } + } + } + } + } + } + } + } + unless($list_all_tests) { + $count++; + is $okays, $this_iteration, "$okays subtests ok for" + . " /$charset_mod" + . (($charset_mod eq 'l') ? " ($current_locale)" : "") + . ', target="' . join("", @x_target) . '",' + . ' pat="' . join("", @x_pattern) . '"'; + } + } + } +} +} + +plan($count); + +1 diff --git a/gnu/usr.bin/perl/t/re/fold_grind_8.t b/gnu/usr.bin/perl/t/re/fold_grind_8.t new file mode 100644 index 00000000000..b614c106381 --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_8.t @@ -0,0 +1,36 @@ +#!./perl + +# Call fold_grind with /l and a UTF-8 locale + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +skip_all "No locales" unless locales_enabled('LC_CTYPE'); + +# Look for a utf8 locale. +my $utf8_locale = find_utf8_ctype_locale(); +skip_all "Couldn't find a UTF-8 locale" unless defined $utf8_locale; + +my $current_locale = POSIX::setlocale( &POSIX::LC_CTYPE, $utf8_locale) // ""; +skip_all "Couldn't set locale to $utf8_locale" + unless $current_locale eq $utf8_locale; + +$::TEST_CHUNK = 'L'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; + +1; + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff --git a/gnu/usr.bin/perl/t/re/fold_grind_T.t b/gnu/usr.bin/perl/t/re/fold_grind_T.t new file mode 100644 index 00000000000..8b026cdfd09 --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_T.t @@ -0,0 +1,35 @@ +#!./perl + +# Call fold_grind with /l and a UTF-8 Turkic locale + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +skip_all "No locales" unless locales_enabled('LC_CTYPE'); + +my $turkic_locale = find_utf8_turkic_locale(); +skip_all "Couldn't find a UTF-8 turkic locale" unless defined $turkic_locale; + +my $current_locale = POSIX::setlocale( &POSIX::LC_CTYPE, $turkic_locale) // ""; +skip_all "Couldn't set locale to $turkic_locale" + unless $current_locale eq $turkic_locale; + +$::TEST_CHUNK = 'T'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; + +1; + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff --git a/gnu/usr.bin/perl/t/re/fold_grind_a.t b/gnu/usr.bin/perl/t/re/fold_grind_a.t new file mode 100644 index 00000000000..175e9ca3b94 --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_a.t @@ -0,0 +1,24 @@ +#!./perl + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +$::TEST_CHUNK = 'a'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; + +1; + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff --git a/gnu/usr.bin/perl/t/re/fold_grind_aa.t b/gnu/usr.bin/perl/t/re/fold_grind_aa.t new file mode 100644 index 00000000000..40df70684cc --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_aa.t @@ -0,0 +1,20 @@ +#!./perl + +# Call fold_grind with /aa + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +$::TEST_CHUNK = 'aa'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; diff --git a/gnu/usr.bin/perl/t/re/fold_grind_d.t b/gnu/usr.bin/perl/t/re/fold_grind_d.t new file mode 100644 index 00000000000..14897fb3e6a --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_d.t @@ -0,0 +1,24 @@ +#!./perl + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +$::TEST_CHUNK = 'd'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; + +1; + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff --git a/gnu/usr.bin/perl/t/re/fold_grind_l.t b/gnu/usr.bin/perl/t/re/fold_grind_l.t new file mode 100644 index 00000000000..c5cfc7b32fd --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_l.t @@ -0,0 +1,41 @@ +#!./perl + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +skip_all "No locales" unless locales_enabled('LC_CTYPE'); + +my $current_locale = POSIX::setlocale( &POSIX::LC_CTYPE, "C") // ""; +skip_all "Couldn't set locale to C" unless $current_locale eq 'C'; + +use locale; + +# Some implementations don't have the 128-255 range characters all +# mean nothing under the C locale (an example being VMS). This is +# legal, but since we don't know what the right answers should be, +# skip the locale tests in that situation. +for my $i (128 .. 255) { + my $char = chr(utf8::unicode_to_native($i)); + skip_all "C locale doesn't behave as expected" if uc($char) ne $char + || lc($char) ne $char; +} + +$::TEST_CHUNK = 'l'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; + +1; + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff --git a/gnu/usr.bin/perl/t/re/fold_grind_u.t b/gnu/usr.bin/perl/t/re/fold_grind_u.t new file mode 100644 index 00000000000..fb2013ed597 --- /dev/null +++ b/gnu/usr.bin/perl/t/re/fold_grind_u.t @@ -0,0 +1,24 @@ +#!./perl + +use strict; +use warnings; +no warnings 'once'; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + require './loc_tools.pl'; + set_up_inc('../lib'); +} + +$::TEST_CHUNK = 'u'; + +do './re/fold_grind.pl'; +print STDERR "$@\n" if $@; +print STDERR "$!\n" if $!; + +1; + +# +# ex: set ts=8 sts=4 sw=4 et: +# diff --git a/gnu/usr.bin/perl/t/re/user_prop_race_thr.t b/gnu/usr.bin/perl/t/re/user_prop_race_thr.t new file mode 100644 index 00000000000..c240a596c71 --- /dev/null +++ b/gnu/usr.bin/perl/t/re/user_prop_race_thr.t @@ -0,0 +1,117 @@ +#!perl +use strict; +use warnings; + +require './test.pl'; +skip_all_without_config('useithreads'); +skip_all_if_miniperl("no dynamic loading on miniperl, no threads"); + +plan(3); + +require threads; + +{ + fresh_perl_is(' + use threads; + use strict; + use warnings; + + sub main::IsA { + use feature "state"; + + state $upper_char = ord "A"; + state $lower_char = ord "a"; + + return sprintf "%x", $lower_char++ if shift; + return sprintf "%x", $upper_char++; + } + + my @threads = map +threads->create(sub { + sleep 0.1; + + for (1..2500) { + return 0 unless eval "qq(A) =~ qr/\\\p{main::IsA}/"; + return 0 unless eval "qq(a) =~ qr/\\\p{main::IsA}/i"; + } + + return 1; + }), (0..1); + my $success = $threads[0]->join; + $success += $threads[1]->join; + print $success;', + 2, + {}, + "Simultaneous threads worked"); + +} + +{ + fresh_perl_is(' + use threads; + use strict; + use warnings; + + sub InLongSleep { + use feature "state"; + + state $which = 0; + + sleep(60) unless $which++; + return "0042"; + } + + sub InQuick { + return sprintf "%x", ord("C"); + } + + my $thread0 = threads->create(sub { + + my $a = \'\p{InLongSleep}\'; + qr/$a/; + + return 1; + }); + my $thread1 = threads->create(sub { + sleep 1; + + my $c = \'\p{InQuick}\'; + return "C" =~ /$c/; + }); + print $thread1->join; + $thread0->detach();', + 1, + {}, + "One thread hung on a defn doesn't impinge on other's other defns"); +} + +{ + fresh_perl_like(' + use threads; + use strict; + use warnings; + + sub InLongSleep { + use feature "state"; + + state $which = 0; + + sleep(25) unless $which++; + return "0042"; + } + + my @threads = map +threads->create(sub { + sleep 1; + + my $a = \'\p{InLongSleep}\'; + qr/$a/; + + return 1; + }), (0..1); + $threads[1]->join; + $threads[0]->detach();', + qr/Thread \d+ terminated abnormally: Timeout waiting for another thread to define "InLongSleep" in regex/, + {}, + "One thread hung on a definition doesn't delay another indefinitely"); +} + +1; diff --git a/gnu/usr.bin/perl/t/uni/caller.t b/gnu/usr.bin/perl/t/uni/caller.t index c48018c1ee5..e05f73735d3 100644 --- a/gnu/usr.bin/perl/t/uni/caller.t +++ b/gnu/usr.bin/perl/t/uni/caller.t @@ -5,12 +5,13 @@ BEGIN { chdir 't' if -d 't'; require './test.pl'; set_up_inc('../lib'); - plan( tests => 18 ); } use utf8; use open qw( :utf8 :std ); +plan( tests => 18 ); + package ï½ï½ï½‰ï½Ž; { diff --git a/gnu/usr.bin/perl/uni_keywords.h b/gnu/usr.bin/perl/uni_keywords.h index df39c7e7670..8b629ae93fe 100644 --- a/gnu/usr.bin/perl/uni_keywords.h +++ b/gnu/usr.bin/perl/uni_keywords.h @@ -4,157 +4,176 @@ * Any changes made here will be lost! */ +/* The precision to use in "%.*e" formats */ +#define PL_E_FORMAT_PRECISION 2 + #define MPH_VALt I16 /* -rows: 6507 +rows: 7016 seed: 1348825708 -full length of keys: 91401 -blob length: 8943 -ref length: 52056 -data size: 60999 (%66.74) +full length of keys: 98325 +blob length: 9964 +ref length: 56128 +data size: 66092 (%67.22) */ STATIC const unsigned char mph_blob[] = "unifiedcanadianaboriginalsyllabicsextendedcjkcompatibilityideogra" "phssupplementarabicmathematicalalphabeticsymbolscombiningdiacriti" "calmarksforsymbolscombiningdiacriticalmarkssupplementmiscellaneou" - "ssymbolsandpictographs_perl_problematic_locale_foldeds_combiningd" - "iacriticalmarksextendedmiscellaneousmathematicalsymbolsamiscellan" - "eousmathematicalsymbolsbsupplementalmathematicaloperatorssuppleme" - "ntalsymbolsandpictographsideographicdescriptioncharactersideograp" - "hicsymbolsandpunctuationmathematicalalphanumericsymbolscjkunified" - "ideographsextensionacjkunifiedideographsextensionbcjkunifiedideog" - "raphsextensionccjkunifiedideographsextensiondcjkunifiedideographs" - "extensionecjkunifiedideographsextensionfcuneiformnumbersandpunctu" - "ationenclosedalphanumericsupplementenclosedideographicsupplementm" - "iscellaneoussymbolsandarrowsphoneticextensionssupplementsupplemen" - "taryprivateuseareaasupplementaryprivateuseareabvariationselectors" - "supplementalphabeticpresentationformsancientgreekmusicalnotationc" - "anonicalcombiningclass=cccenclosedcjklettersandmonthsopticalchara" - "cterrecognitionconditionaljapanesestarterhalfwidthandfullwidthfor" - "mskatakanaphoneticextensionsprependedconcatenationmarkchangeswhen" - "nfkccasefoldeddefaultignorablecodepointsuperscriptsandsubscriptsa" - "rabicpresentationformsaarabicpresentationformsbcjksymbolsandpunct" - "uationcombiningmarksforsymbolsconsonantsucceedingrephafullcomposi" - "tionexclusionhighprivateusesurrogatesindicpositionalcategory=indi" - "csyllabiccategory=insupsymbolsandpictographsbidipairedbrackettype" - "=cbyzantinemusicalsymbolsconsonantprecedingrephageometricshapesex" - "tendedhangulcompatibilityjamolatinextendedadditionalshorthandform" - "atcontrolssupplementalpunctuationcjkcompatideographssupcommonindi" - "cnumberformsdiacriticalsforsymbolsearlydynasticcuneiformgraphemec" - "lusterbreak=smiscellaneoustechnicalspacingmodifierletterstranspor" - "tandmapsymbolschangeswhencasefoldedchangeswhencasemappedchangeswh" - "enlowercasedchangeswhentitlecasedchangeswhenuppercasedcjkcompatib" - "ilityformscjkradicalssupplementcyrillicsupplementaryinscriptional" - "parthianlogicalorderexceptionmeeteimayekextensionsnoncharactercod" - "epointpopdirectionalisolatesinhalaarchaicnumbersyijinghexagramsym" - "bolsanatolianhieroglyphsconnectorpunctuationconsonantplaceholderc" - "onsonantwithstackergeneralcategory=lineglagoliticsupplementinscri" - "ptionalpahlavilefttorightembeddingpopdirectionalformatrighttoleft" - "embeddingtopandbottomandrightverticalorientation=ancientgreeknumb" - "ersbrahmijoiningnumberburushaskiyehbarreeconsonantheadlettercount" - "ingrodnumeralsegyptianhieroglyphsenclosedalphanumsupfolds_to_mult" - "i_charhanguljamoextendedahanguljamoextendedblefttorightoverrideme" - "roitichieroglyphsmodifiertonelettersmongoliansupplementrighttolef" - "toverridesundanesesupplementsupplementalarrowsasupplementalarrows" - "bsupplementalarrowscterminalpunctuationattachedaboverightcherokee" - "supplementcombininghalfmarksconsonantsubjoinedcopticepactnumbersd" - "ecompositiontype=devanagariextendedethiopicsupplementeuropeanterm" - "inatorfirststrongisolategeneralpunctuationgeorgiansupplementidstr" - "inaryoperatorinitialpunctuationlatinextadditionallefttorightisola" - "teornamentaldingbatsparagraphseparatorrighttoleftisolateruminumer" - "alsymbolsscriptextensions=vtaixuanjingsymbolstopandleftandrighttr" - "ansformedrotatedtransformeduprighttype=notapplicablealchemicalsym" - "bolsattachedbelowleftcanadiansyllabicscaucasianalbanianconsonantp" - "refixedcyrillicextendedacyrillicextendedbcyrillicextendedceastasi" - "anwidth=haethiopicextendedaeuropeanseparatoridsbinaryoperatorlett" - "erlikesymbolsmanichaeandhamedhmanichaeanhundredmanichaeanthamedhp" - "atternwhitespaceregionalindicatorsmallformvariantssuttonsignwriti" - "ngtype=trailingjamoarabicsupplementbopomofoextendedcantillationma" - "rkcloseparenthesisclosepunctuationcypriotsyllabaryfinalpunctuatio" - "nhalfandfullformshighpusurrogateslatin1supplementlinearbideograms" - "linearbsyllabarymanichaeandalethmanichaeanlamedhmanichaeansamekhm" - "anichaeantwentymiscmathsymbolsamiscmathsymbolsbmyanmarextendedamy" - "anmarextendedbotherpunctuationsegmentseparatorsentenceterminalsup" - "mathoperatorssyllablemodifiersyriacsupplementtangutcomponentstype" - "=leadingjamotype=lvtsyllablevowelindependent_perl_charname_arabic" - "extendedabamumsupplementboundaryneutralbraillepatternscommonsepar" - "atorconsonantkillerconsonantmedialcontingentbreakcontrolpicturesc" - "urrencysymbolsdashpunctuationdiacriticalsextdiacriticalssuphangul" - "syllablesimperialaramaicjoininggroup=kalowercaselettermanichaeana" - "lephmanichaeangimelmanichaeansadhemanichaeanzayinmeroiticcursivem" - "iscpictographsmodifyingletternfcquickcheck=nnfdquickcheck=nnfkcqu" - "ickcheck=oldnortharabianoldsoutharabianopenpunctuationregistershi" - "ftersentencebreak=ctitlecaselettertype=lvsyllableuppercaseletterv" - "edicextensionsvisualorderleftzanabazarsquareancientsymbolscarriag" - "ereturncjkcompatformscomplexcontextconsonantfinaleuropeannumberge" - "minationmarkgraphemeextendgreekandcoptichamzaonhehgoalhighsurroga" - "teskanasupplementkangxiradicalslatinextendedblatinextendedclatine" - "xtendeddlatinextendedemandatorybreakmanichaeanayinmanichaeanbethm" - "anichaeanfivemanichaeanhethmanichaeankaphmanichaeanqophmanichaean" - "reshmanichaeantethmanichaeanyodhmodifiersymbolnfkdquickchecknojoi" - "ninggroupnonspacingmarkphoneticextsuppostfixnumericpsalterpahlavi" - "spaceseparatorsuppunctuationtehmarbutagoaltype=voweljamovisiblest" - "ackervoweldependent1000000000000aegeannumbersasciihexdigitblockel" - "ementsbottomandleftcaseignorableconsonantdeaddecimalnumberenclosi" - "ngmarkgreekextendediotasubscriptipaextensionsjoiningtype=dkanaext" - "endedalineseparatorlowsurrogatesmalayalamlllamalayalamnnnamanicha" - "eanmemmanichaeannunmanichaeanonemanichaeantawmanichaeantenmanicha" - "eanwawmisctechnicalnumericvalue=patternsyntaxprefixnumericquotati" - "onmarkverticalformsalphabeticpfarabicletterarabicnumberbidiclass=" - "bobidimirroredbreaksymbolscyrillicextacyrillicextbcyrillicextceth" - "iopicextaextendnumletfinalsemkathglueafterzwjgraphemebasehebrewle" - "tterinfixnumerickhmersymbolsletternumbermahjongtilesmalayalambham" - "alayalamllamalayalamngamalayalamnnamalayalamnyamalayalamssamalaya" - "lamttamanichaeanpemasaramgondimathalphanummendekikakuinoncanonica" - "lnotreorderednumberjoineroldhungarianotherneutralphaistosdiscplay" - "ingcardsrightjoiningafricannoonbidicontrolbreakbeforecasedletterc" - "ategory=cadominotilesdoubleabovedoublebelowdoublequotedualjoining" - "exclamationinseparableinseperablejoincausingjoincontrolkanavoicin" - "gkatakanaextleftjoininglinebreak=mmalayalamjamalayalamramiscsymbo" - "lsmyanmarextamyanmarextbnumerictypeotherletterothernumberothersym" - "bolpahawhhmongrohingyayehsinglequotesorasompengstraightwawsuperan" - "dsubsylotinagritopandrighttransparentwordbreak=nxidcontinueyehwit" - "htailyisyllablesafricanfehafricanqafarabicextabasiclatinbelowrigh" - "tboxdrawingbreakaftercjkstrokescompatjamodalathrishdeprecatedkhar" - "oshthiknottedhehmiscarrowsnonjoiningnonstarteroldpersianoverstruc" - "kphoenicianpresentin=purekillerreversedpesaurashtrasmallformssoft" - "dottedsuparrowsasuparrowsbsuparrowscunassignedwarangcitiwordjoine" - "ryiradicalsaboveleftambiguousany_foldsarabicpfaarabicpfbbhaiksuki" - "blk=indicbreakbothemoticonsinheritedkhudawadilatinextblatinextcla" - "tinextdmidlettermidnumletnabataeannewtailuenonjoinerolditalicoldp" - "ermicoldturkicpalmyrenepaucinhauquotemetasamaritanscontinuesyriac" - "waw=decimal=numericarmenianavagrahabalinesebassavahblock=blbugine" - "seduployanebasegazextenderfarsiyehfractiongujaratigurmukhihiragan" - "aisolatedisxposixjamoextajamoextbjavanesekanaextalinefeedmahajani" - "nextlinescript=bspecialsswashkaftagbanwatifinaghtonemarkugariticx" - "idstartaletteravestanbengalic=maybeccc=ccccjkextacjkextbcjkextccj" - "kextdcjkextecjkextfdeseretelbasangranthahanunooinsc=inishorizispo" - "sixisspaceisxperlkannadakayahlilinearamandaicmarchenmultaninobloc" - "knobreaknondcijolchikioletterosmanyaoverlayphagspasharadashavians" - "iddhamsoyombosuppuaasuppuabtagalogtaithamtaiviettibetantirhutatyp" - "e=naucasextunknownvisargazwspace200000216000300000400000432000500" - "000600000700000800000900000=digit=false_case_carianchakmacircleco" - "mpexewlinegothicgrbasehatranhyphenisperlisvertkaithikanbunkhojkil" - "amadhlepchalycianlydiannarrowpatsynrejangsc=khateluguthaanavirama" - "yudhhe1/16011/12=none=trueadlamalaphatermbatakbeginbindublankbuhi" - "dc=yescntrlcwkcfgc=segcb=ggrextinpc=inzanisunikhaphlimbunuktanush" - "uoghamoriyaosagepatwsprintqmarkrunicscx=bstermtailetakritamiluide" - "ovssupzhain-1/21/101/201/4010.011/213/215/217/23/163/203/805/127/" - "12adlmage=aghbahexahomalefarmiarmnataratblavstbatkbc=ebhksbpt=buh" - "dc=nocakmcanscprtcwcfcwcmcyrldsrtdt=efontgonmgrekgujrguruhanihano" - "hluwhmnginblinshintijg=gjt=lkalikhmrkndakthilanalaoolatnlb=llinal" - "inblisumeemmercmiaomlymmroomteimymrnarbnbatnewankoonshuogamolckor" - "khoryaosgephlpphnxplrdprtiqaacqaaiqaphrjngrunrsamrsarbsb=csc=lsee" - "nsgnwshawshrdsyrctagstalutamltavttfngtglgthaitibtv100vaiiwb=nwide" - "xpeoxsuxyiiizainzanbzinhzyyyzzzz1.11/31/51/61/71/81/9103107118122" - "1291301321332.02.12/32/52022142182202222242262282302322332342403." - "03.13.23/43/54.04.14/55.05.15.25/65/86.06.16.26.37.07/88.09.09/2b" - "ehcwlcwtcwuea=ebgfsiinvloelrelrilromimnsmnv=ocrpcmpdfrehsmlsqrtah" - "v11v20v21v30v31v32v40v41v50v51v52v60v61v62v63v70v80v90vo=19353638" - "39444546474849b2bkh2h3jljvl&vrxxzlzpzs"; -/* mph_blob length: 8943 */ + "ssymbolsandpictographscombiningdiacriticalmarksextendedmiscellane" + "ousmathematicalsymbolsamiscellaneousmathematicalsymbolsbsupplemen" + "talmathematicaloperatorssupplementalsymbolsandpictographsegyptian" + "hieroglyphformatcontrolsideographicdescriptioncharactersideograph" + "icsymbolsandpunctuationmathematicalalphanumericsymbolscjkunifiedi" + "deographsextensionacjkunifiedideographsextensionbcjkunifiedideogr" + "aphsextensionccjkunifiedideographsextensiondcjkunifiedideographse" + "xtensionecjkunifiedideographsextensionfcuneiformnumbersandpunctua" + "tionenclosedalphanumericsupplementsymbolsandpictographsextendedae" + "nclosedideographicsupplementmiscellaneoussymbolsandarrowsphonetic" + "extensionssupplementsupplementaryprivateuseareaasupplementarypriv" + "ateuseareabvariationselectorssupplementalphabeticpresentationform" + "sancientgreekmusicalnotationenclosedcjklettersandmonthsopticalcha" + "racterrecognitionprependedconcatenationmark=changeswhennfkccasefo" + "lded=conditionaljapanesestarterdefaultignorablecodepoint=halfwidt" + "handfullwidthformskatakanaphoneticextensionsconsonantinitialpostf" + "ixedfullcompositionexclusion=superscriptsandsubscriptssymbolsandp" + "ictographsextaarabicpresentationformsaarabicpresentationformsbcan" + "onicalcombiningclass=cjksymbolsandpunctuationcombiningmarksforsym" + "bolsconsonantsucceedingrephahighprivateusesurrogatesindicposition" + "alcategory=supsymbolsandpictographsbyzantinemusicalsymbolsconsona" + "ntprecedingrephageometricshapesextendedhangulcompatibilityjamolat" + "inextendedadditionalshorthandformatcontrolssupplementalpunctuatio" + "nbidipairedbrackettype=changeswhencasefolded=changeswhencasemappe" + "d=changeswhenlowercased=changeswhentitlecased=changeswhenuppercas" + "ed=cjkcompatideographssupcommonindicnumberformsdiacriticalsforsym" + "bolsearlydynasticcuneiformindicsyllabiccategory=logicalorderexcep" + "tion=miscellaneoustechnicalnoncharactercodepoint=spacingmodifierl" + "etterstransportandmapsymbolscjkcompatibilityformscjkradicalssuppl" + "ementcyrillicsupplementarygraphemeclusterbreak=hanifirohingyakinn" + "ayainscriptionalparthianmeeteimayekextensionspopdirectionalisolat" + "esinhalaarchaicnumbersyijinghexagramsymbolsanatolianhieroglyphsco" + "nnectorpunctuationconsonantplaceholderconsonantwithstackerglagoli" + "ticsupplementinscriptionalpahlavilefttorightembeddingnyiakengpuac" + "huehmongpopdirectionalformatrighttoleftembeddingterminalpunctuati" + "on=topandbottomandrightverticalorientation=ancientgreeknumbersbra" + "hmijoiningnumberburushaskiyehbarreeconsonantheadlettercountingrod" + "numeralsegyptianhieroglyphsenclosedalphanumsuphanguljamoextendeda" + "hanguljamoextendedbhangulsyllabletype=idstrinaryoperator=lefttori" + "ghtoverridemeroitichieroglyphsmodifiertonelettersmongoliansupplem" + "entottomansiyaqnumbersrighttoleftoverridesundanesesupplementsuppl" + "ementalarrowsasupplementalarrowsbsupplementalarrowscattachedabove" + "rightcherokeesupplementcombininghalfmarksconsonantsubjoinedcoptic" + "epactnumbersdecompositiontype=devanagariextendedethiopicsupplemen" + "teuropeanterminatorfirststrongisolategeneralpunctuationgeorgiansu" + "pplementidsbinaryoperator=initialpunctuationlatinextadditionallef" + "ttorightisolateornamentaldingbatsparagraphseparatorpatternwhitesp" + "ace=regionalindicator=righttoleftisolateruminumeralsymbolssmallka" + "naextensiontaixuanjingsymbolstopandleftandrighttransformedrotated" + "transformeduprightvariationselector=alchemicalsymbolsattachedbelo" + "wleftcanadiansyllabicscaucasianalbanianconsonantprefixedcyrillice" + "xtendedacyrillicextendedbcyrillicextendedcethiopicextendedaeurope" + "anseparatorindicsiyaqnumbersletterlikesymbolsmanichaeandhamedhman" + "ichaeanhundredmanichaeanthamedhscriptextensions=sentenceterminal=" + "smallformvariantssuttonsignwritingunifiedideograph=arabicsuppleme" + "ntbopomofoextendedcantillationmarkcloseparenthesisclosepunctuatio" + "ncypriotsyllabaryfinalpunctuationgeneralcategory=georgianextended" + "halfandfullformshanifirohingyapahighpusurrogatesinvisiblestackerl" + "atin1supplementlinearbideogramslinearbsyllabarymanichaeandalethma" + "nichaeanlamedhmanichaeansamekhmanichaeantwentymiscmathsymbolsamis" + "cmathsymbolsbmyanmarextendedamyanmarextendedbotherpunctuationsegm" + "entseparatorsupmathoperatorssyllablemodifiersyriacsupplementtangu" + "tcomponentsvowelindependentarabicextendedabamumsupplementboundary" + "neutralbraillepatternscommonseparatorconsonantkillerconsonantmedi" + "alcontingentbreakcontrolpicturescurrencysymbolsdashpunctuationdia" + "criticalsextdiacriticalssupeastasianwidth=graphemeextend=hangulsy" + "llablesimperialaramaiclowercaselettermanichaeanalephmanichaeangim" + "elmanichaeansadhemanichaeanzayinmeroiticcursivemiscpictographsmod" + "ifyingletternfkcquickcheck=nfkdquickcheck=oldnortharabianoldsouth" + "arabianopenpunctuationregistershiftertamilsupplementtitlecaselett" + "eruppercaselettervedicextensionsvisualorderleftzanabazarsquareanc" + "ientsymbolsasciihexdigit=carriagereturncaseignorable=cjkcompatfor" + "mscomplexcontextconsonantfinaleuropeannumbergeminationmarkgreekan" + "dcoptichamzaonhehgoalhighsurrogateskanasupplementkangxiradicalsla" + "tinextendedblatinextendedclatinextendeddlatinextendedemandatorybr" + "eakmanichaeanayinmanichaeanbethmanichaeanfivemanichaeanhethmanich" + "aeankaphmanichaeanqophmanichaeanreshmanichaeantethmanichaeanyodhm" + "odifiersymbolnfcquickcheck=nfdquickcheck=nojoininggroupnonspacing" + "markpatternsyntax=phoneticextsuppostfixnumericpsalterpahlaviquota" + "tionmark=sentencebreak=spaceseparatorsuppunctuationtehmarbutagoal" + "voweldependent1000000000000aegeannumbersbidimirrored=blockelement" + "sbottomandleftconsonantdeaddecimalnumberenclosingmarkgraphemebase" + "=greekextendediotasubscriptipaextensionsjoininggroup=kanaextended" + "alineseparatorlowsurrogatesmalayalamlllamalayalamnnnamanichaeanme" + "mmanichaeannunmanichaeanonemanichaeantawmanichaeantenmanichaeanwa" + "wmayannumeralsmisctechnicalnotapplicablenumericvalue=prefixnumeri" + "cverticalformsalphabeticpfarabicletterarabicnumberbidicontrol=bre" + "aksymbolschesssymbolscyrillicextacyrillicextbcyrillicextcethiopic" + "extaextendnumletfinalsemkathglueafterzwjgunjalagondihebrewletteri" + "deographic=infixnumericjoincontrol=joiningtype=khmersymbolsletter" + "numbermahjongtilesmalayalambhamalayalamllamalayalamngamalayalamnn" + "amalayalamnyamalayalamssamalayalamttamanichaeanpemasaramgondimath" + "alphanummendekikakuinoncanonicalnotreorderednumberjoinernumericty" + "pe=oldhungarianotherneutralphaistosdiscplayingcardsrightjoiningtr" + "ailingjamoxidcontinue=africannoonalphabetic=breakbeforecasedlette" + "rdeprecated=dominotilesdoubleabovedoublebelowdoublequotedualjoini" + "ngexclamationinseparableinseperablejoincausingkanavoicingkatakana" + "extleadingjamoleftjoininglvtsyllablemalayalamjamalayalamramedefai" + "drinmiscsymbolsmyanmarextamyanmarextbnandinagariotherletterothern" + "umberothersymbolpahawhhmongrohingyayehsinglequotesoftdotted=soras" + "ompengstraightwawsuperandsubsylotinagritopandrighttransparentyehw" + "ithtailyisyllablesafricanfehafricanqafarabicextabasiclatinbelowri" + "ghtbidiclass=boxdrawingbreakaftercjkstrokescompatjamodalathrishdi" + "acritic=kharoshthiknottedhehlinebreak=lowercase=lvsyllablemiscarr" + "owsnonjoiningnonstarteroldpersianoldsogdianoverstruckphoenicianpr" + "esentin=purekillerreversedpesaurashtrasmallformssuparrowsasuparro" + "wsbsuparrowscunassigneduppercase=warangcitiwordbreak=wordjoineryi" + "radicals-5.00e-01aboveleftambiguousarabicpfaarabicpfbbhaiksukibre" + "akbothemoticonsextender=inheritedkhudawadilatinextblatinextclatin" + "extdmidlettermidnumletnabataeannewtailuenonjoinerolditalicoldperm" + "icoldturkicpalmyrenepaucinhausamaritanscontinuesyriacwawvoweljamo" + "wsegspacexidstart=1.00e-011.11e-011.25e-011.25e-021.43e-011.50e+0" + "01.50e-011.56e-021.67e-011.88e-012.00e-012.50e+002.50e-012.50e-02" + "200000003.12e-023.13e-023.13e-033.33e-013.50e+003.75e-013.75e-024" + ".00e-014.17e-014.50e+004.69e-025.00e-025.50e+005.83e-016.00e-016." + "25e-016.25e-026.25e-036.50e+006.67e-017.50e+007.50e-018.00e-018.3" + "3e-018.33e-028.50e+008.75e-019.17e-01armenianavagrahabalinesebass" + "avahbugineseduployanebasegazfarsiyehfractiongujaratigurmukhihirag" + "anaisolatedjamoextajamoextbjavanesekanaextalinefeedmahajaninextli" + "neradical=specialsswashkaftagbanwatifinaghtonemarkugariticaletter" + "avestanbengalicjkextacjkextbcjkextccjkextdcjkextecjkextfcompex=de" + "seretelbasanelymaicgranthagrbase=hanunoohyphen=kannadakayahliline" + "aramakasarmandaicmarchenmultaninewlinenfkcqc=nfkdqc=noblocknobrea" + "kolchikioletterosmanyaoverlaypatsyn=phagspascript=sharadashavians" + "iddhamsoyombosuppuaasuppuabtagalogtaithamtaiviettibetantirhutauca" + "sextunknownvisargawspace=zwspace216000300000400000432000500000600" + "000700000800000900000alpha=bidic=bidim=block=carianccc103ccc107cc" + "c118ccc122ccc129ccc130ccc132ccc133chakmacirclecwkcf=gothicgrext=h" + "atranjoinc=kaithikanbunkhojkilamadhlepchalower=lycianlydiannarrow" + "nchar=nfcqc=nfdqc=patws=qmark=rejangsterm=teluguthaanauideo=upper" + "=viramawanchoyudhhe1/1601/32011/12adlamahex=alaphatermbatakbindub" + "uhidccc14ccc15ccc16ccc17ccc18ccc19ccc20ccc21ccc22ccc23ccc24ccc25c" + "cc26ccc27ccc28ccc29ccc30ccc31ccc32ccc33ccc34ccc35ccc36ccc84ccc91c" + "ntrlcwcf=cwcm=dash=dografalseidsb=idst=inpc=insc=khaphlimbumath=m" + "aybenuktanushuoghamoriyaosagerunictailetakrivssupxidc=xids=zhain-" + "1/21/101/201/401/641/8010.011.011/212.113/215/217/23/163/203/643/" + "805/127/12adlmage=aghbahomalefarmiarmnataratblavstbatkbhksblk=bpt" + "=buhdcakmcansccc=cprtcwl=cwt=cwu=cyrldep=dia=dsrtfontgcb=gonggonm" + "grekgujrguruhanohluwhmnghmnphst=kalikhmrkndakthilanalaoolatnlinal" + "inblisuloe=medfmeemmercmiaomlymmroomteimymrnarbnbatnewankoonshuog" + "amolckorkhoryaosgepcm=phlpphnxplrdprtiqaacqaaiqaphrjngrohgrunrsam" + "rsarbscx=seensgnwshawshinshrdsogosyrctagstaletalutamltavttfngtglg" + "thaitibttruev100v110v120v121vaiiwchowidexpeoxsuxyiiizainzanbzinhz" + "yyyzzzz1/51/71/92/32/52022142182222242262282302322332342403.03.23" + "/43/54/55.15.25/65/86.16.37.07/89.09/2bc=behci=di=dt=ea=ebgfsigaf" + "gc=jg=jt=lb=lrelrilromimnsmnv=ocrpdfrehri=sd=smlsqrtahv20v21v30v3" + "1v32v40v41v50v51v52v60v61v62v63v70v80v90vo=vs=wb=yes3839444546474" + "849b2bkh2h3jljvkvl&l_vrxxzlzpzs_perl_problematic_locale_foldeds_i" + "s_in_multi_char_fold_perl_folds_to_perl_charname__perl_non_finabe" + "ginany_foldsquotemetaisxposixisposixblankprintishorizisxperlisper" + "lisspaceisvertisuni"; +/* mph_blob length: 9964 */ struct mph_struct { U16 seed2; @@ -166,6520 +185,7029 @@ struct mph_struct { }; #define MPH_RSHIFT 8 -#define MPH_BUCKETS 6507 +#define MPH_BUCKETS 7016 STATIC const U32 MPH_SEED1 = 0x5065726c; STATIC const U32 MPH_FNV_CONST = 0x01000193; - +/* The comments give the input key for the row it is in */ STATIC const struct mph_struct mph_table[MPH_BUCKETS] = { - { 0, 2108, 7209, 3, 7, PL_INHIRAGANA } /* inhiragana */, - { 4, 8376, 6576, 3, 10, PL_LB__BA } /* lb=breakafter */, - { 0, 3521, 218, 5, 4, PL_XPOSIXSPACE } /* spaceperl */, - { 0, 1417, 468, 9, 11, PL_P } /* category=punctuation */, - { 3, 7288, 8111, 7, 5, PL_SC__TAKR } /* script=takri */, - { 3, 8096, 8208, 4, 4, PL_AHOM } /* scx=ahom */, - { 2, 8508, 7877, 4, 3, PL_LYCI } /* sc=lyci */, - { 0, 3129, 8400, 17, 4, PL_MIAO } /* scriptextensions=miao */, - { 0, 2221, 4030, 3, 12, PL_GCB__L } /* hst=leadingjamo */, - { 0, 6647, 3273, 4, 15, PL_UCAS } /* iscanadiansyllabics */, - { 0, 8204, 3223, 4, 3, -PL_POSIXXDIGIT } /* ahex=no */, - { 0, 7459, 8536, 3, 4, PL_TALU } /* sc=talu */, - { 0, 8572, 4653, 3, 2, PL_WB__SQ } /* wb=sq */, - { 4, 6890, 2731, 4, 19, PL_SUPARROWSC } /* blk=supplementalarrowsc */, - { 0, 7459, 7900, 3, 6, PL_RJNG } /* sc=rejang */, - { 0, 6210, 511, 3, 19, PL_CJK } /* incjkunifiedideographs */, - { 1, 4239, 3581, 4, 2, PL_DASH } /* dash=t */, - { 1, 8096, 8464, 4, 4, PL_PHNX } /* scx=phnx */, - { 2, 1417, 3914, 9, 16, PL_PO } /* category=otherpunctuation */, - { 2, 8783, 7997, 3, 4, PL_CWU } /* cwu=yes */, - { 0, 7478, 3995, 3, 5, PL_SYRC } /* issyriac */, - { 3, 2100, 5871, 3, 3, PL_OGAM } /* isogam */, - { 0, 4314, 6516, 13, 10, PL_JG__AFRICANFEH } /* joininggroup=africanfeh */, - { 1, 4440, 2251, 4, 11, PL_GLAGOLITICSUP } /* inglagoliticsup */, - { 6, 2002, 0, 21, 0, PL_PRTI } /* inscriptionalparthian */, - { 0, 184, 7799, 3, 5, PL_COMPEX } /* iscompex */, - { 0, 7459, 7520, 3, 4, PL_MARC } /* sc=marc */, - { 0, 3129, 2149, 17, 20, PL_HLUW } /* scriptextensions=anatolianhieroglyphs */, - { 0, 7459, 7555, 3, 7, PL_OLCK } /* sc=olchiki */, - { 0, 6890, 3111, 4, 18, PL_RUMI } /* blk=ruminumeralsymbols */, - { 0, 8376, 4524, 3, 15, PL_LB__OP } /* lb=openpunctuation */, - { 1, 7136, 1543, 6, 18, PL_GEOMETRICSHAPESEXT } /* block=geometricshapesext */, - { 0, 3129, 3994, 17, 6, PL_SYRC } /* scriptextensions=syriac */, - { 1, 6263, 7280, 10, 8, PL_LB__NL } /* linebreak=nextline */, - { 0, 6890, 78, 4, 10, PL_ARABICMATH } /* blk=arabicmath */, - { 22, 7380, 5595, 4, 2, PL_CCC__8 } /* ccc=kv */, - { 3, 8096, 8420, 4, 4, PL_NARB } /* scx=narb */, - { 0, 5134, 6030, 3, 11, PL_PHAISTOS } /* isphaistosdisc */, - { 1, 184, 1681, 3, 21, PL_INDICNUMBERFORMS } /* iscommonindicnumberforms */, - { 1, 8121, 7997, 5, 4, PL_UIDEO } /* uideo=yes */, - { 1, 2108, 4286, 4, 13, PL_INHANGUL } /* inhangulsyllables */, - { 2, 8240, 3093, 3, 18, PL_BC__RLI } /* bc=righttoleftisolate */, - { 1, 3129, 8404, 17, 4, PL_MLYM } /* scriptextensions=mlym */, - { 1, 184, 8420, 2, 4, PL_NARB } /* isnarb */, - { 1, 4402, 780, 3, 28, PL_MISCARROWS } /* inmiscellaneoussymbolsandarrows */, - { 1, 6263, 722, 10, 2, PL_LB__CL } /* linebreak=cl */, - { 1, 3111, 0, 4, 0, PL_RUMI } /* rumi */, - { 1, 6263, 4452, 10, 2, PL_LB__QU } /* linebreak=qu */, - { 1, 415, 7951, 11, 5, PL_IDEO } /* ideographic=true */, - { 1, 7459, 6406, 3, 11, PL_SORA } /* sc=sorasompeng */, - { 2, 21, 2128, 2, 6, PL_YIJING } /* inyijing */, - { 1, 7689, 8201, 3, 3, PL_AGHB } /* isaghb */, - { 4, 3129, 7144, 17, 8, PL_BUGI } /* scriptextensions=buginese */, - { 0, 4239, 7768, 4, 2, -PL_DASH } /* dash=f */, - { 18, 7136, 5093, 6, 14, PL_PHONETICEXTSUP } /* block=phoneticextsup */, - { 2, 5336, 0, 13, 0, PL_GREEKEXT } /* greekextended */, - { 2, 8276, 7997, 4, 4, PL_CWCM } /* cwcm=yes */, - { 0, 7136, 2617, 6, 19, PL_MODIFIERTONELETTERS } /* block=modifiertoneletters */, - { 1, 6756, 7768, 10, 6, -PL_SD } /* softdotted=false */, - { 1, 8798, 7951, 3, 5, PL_LOE } /* loe=true */, - { 10, 8092, 1201, 4, 3, PL_ANY } /* unicode */, - { 0, 7457, 7328, 5, 8, PL_INSC__TONEMARK } /* insc=tonemark */, - { 1, 8096, 2674, 4, 4, PL_SUND } /* scx=sund */, - { 0, 4314, 65, 15, 2, PL_JG__KAPH } /* joininggroup=kaph */, - { 11, 7569, 0, 7, 0, PL_OSMA } /* osmanya */, - { 4, 3509, 7768, 17, 2, -PL_PATWS } /* patternwhitespace=f */, - { 0, 8816, 8171, 3, 2, PL_NV__23 } /* nv=23 */, - { 1, 5544, 7710, 13, 3, PL_NV__600 } /* numericvalue=600 */, - { 0, 7136, 1797, 6, 15, PL_MODIFIERLETTERS } /* block=modifierletters */, - { 1, 447, 0, 18, 0, PL_IDEOGRAPHICSYMBOLS } /* ideographicsymbols */, - { 0, 8376, 1055, 3, 26, PL_LB__CJ } /* lb=conditionaljapanesestarter */, - { 0, 7478, 350, 3, 32, PL_SUPMATHOPERATORS } /* issupplementalmathematicaloperators */, - { 0, 3129, 8480, 17, 4, PL_QAAI } /* scriptextensions=qaai */, - { 0, 2408, 0, 6, 0, PL_BRAH } /* brahmi */, - { 3, 3075, 0, 18, 0, PL_ZP } /* paragraphseparator */, - { 0, 4314, 5746, 13, 7, PL_JG__SEMKATH } /* joininggroup=semkath */, - { 4, 7459, 7583, 3, 7, PL_SC__PHAG } /* sc=phagspa */, - { 2, 2108, 2562, 4, 17, PL_JAMOEXTB } /* inhanguljamoextendedb */, - { 0, 5968, 125, 3, 2, PL_OCR } /* inocr */, - { 0, 6713, 8888, 3, 3, PL_IN__8 } /* in=v80 */, - { 0, 3129, 8492, 17, 4, PL_RUNR } /* scriptextensions=runr */, - { 2, 5765, 7951, 12, 5, PL_GRBASE } /* graphemebase=true */, - { 0, 3129, 2408, 17, 6, PL_BRAH } /* scriptextensions=brahmi */, - { 2, 7136, 1981, 6, 11, PL_CYRILLICSUP } /* block=cyrillicsup */, - { 3, 6756, 7997, 10, 4, PL_SD } /* softdotted=yes */, - { 33, 2134, 7951, 3, 5, PL_XPOSIXXDIGIT } /* hex=true */, - { 1, 5544, 8646, 13, 2, PL_NV__29 } /* numericvalue=29 */, - { 0, 2859, 2991, 18, 3, PL_DT__NAR } /* decompositiontype=nar */, - { 1, 974, 8675, 24, 3, PL_CCC__BL } /* canonicalcombiningclass=218 */, - { 3, 6472, 1621, 10, 6, PL_WB__FO } /* wordbreak=format */, - { 9, 18, 3223, 2, 3, -PL_RI } /* ri=no */, - { 1, 6890, 660, 4, 30, PL_CJKEXTF } /* blk=cjkunifiedideographsextensionf */, - { 0, 96, 7997, 5, 2, PL_XPOSIXALPHA } /* alpha=y */, - { 3, 184, 1107, 2, 8, PL_KANA } /* iskatakana */, - { 6, 3129, 7312, 17, 8, PL_TAGB } /* scriptextensions=tagbanwa */, - { 32, 6890, 3610, 4, 8, PL_INBOPOMOFO } /* blk=bopomofo */, - { 1, 5557, 3581, 13, 2, PL_PATSYN } /* patternsyntax=t */, - { 0, 184, 3866, 2, 16, PL_MISCMATHSYMBOLSB } /* ismiscmathsymbolsb */, - { 1, 7136, 6041, 6, 12, PL_PLAYINGCARDS } /* block=playingcards */, - { 1, 7288, 7007, 7, 9, PL_ITAL } /* script=olditalic */, - { 12, 7810, 0, 6, 0, PL_GOTH } /* gothic */, - { 3, 3129, 7443, 17, 4, PL_GRAN } /* scriptextensions=gran */, - { 1, 8016, 36, 4, 1, PL_GCB__T } /* gcb=t */, - { 0, 1887, 3223, 5, 2, -PL_XPOSIXLOWER } /* lower=n */, - { 1, 8096, 994, 5, 3, PL_BASS } /* scx=bass */, - { 2, 7136, 3722, 6, 16, PL_HIGHPUSURROGATES } /* block=highpusurrogates */, - { 1, 6706, 8867, 10, 3, PL_IN__5_DOT_1 } /* presentin=v51 */, - { 2, 6221, 2467, 4, 9, PL_COUNTINGROD } /* incountingrod */, - { 0, 5232, 0, 13, 0, PL_AEGEANNUMBERS } /* aegeannumbers */, - { 1, 4314, 7930, 13, 4, PL_JG__YUDH } /* joininggroup=yudh */, - { 1, 8816, 8618, 3, 3, PL_NV__1_SLASH_5 } /* nv=1/5 */, - { 1, 2100, 1029, 3, 26, PL_OCR } /* isopticalcharacterrecognition */, - { 0, 2985, 7768, 18, 6, -PL_IDST } /* idstrinaryoperator=false */, - { 4, 1503, 2504, 3, 18, PL_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumsup */, - { 1, 8096, 2636, 4, 4, PL_MONG } /* scx=mong */, - { 0, 7380, 1483, 4, 2, PL_CCC__DB } /* ccc=db */, - { 0, 6890, 7991, 4, 5, PL_INBUHID } /* blk=buhid */, - { 2, 1746, 24, 21, 1, PL_GCB__L } /* graphemeclusterbreak=l */, - { 1, 8284, 0, 4, 0, PL_DSRT } /* dsrt */, - { 1, 7288, 5121, 7, 14, PL_SC__PHLP } /* script=psalterpahlavi */, - { 3, 8780, 0, 3, 0, PL_CWT } /* cwt */, - { 0, 184, 5323, 2, 13, PL_ME } /* isenclosingmark */, - { 1, 1746, 1133, 21, 7, PL_GCB__PP } /* graphemeclusterbreak=prepend */, - { 4, 6890, 4883, 4, 14, PL_LATINEXTE } /* blk=latinextendede */, - { 0, 1929, 0, 9, 0, PL_XPOSIXUPPER } /* uppercase */, - { 1, 1876, 7768, 21, 6, -PL_CWL } /* changeswhenlowercased=false */, - { 2, 5544, 7732, 13, 2, PL_NV__50 } /* numericvalue=50 */, - { 0, 3610, 0, 16, 0, PL_BOPOMOFOEXT } /* bopomofoextended */, - { 5, 6706, 7720, 10, 1, PL_IN__4 } /* presentin=4 */, - { 3, 3129, 7104, 17, 8, PL_ARMN } /* scriptextensions=armenian */, - { 0, 8332, 7599, 4, 5, PL_SHAW } /* inshavian */, - { 0, 7459, 8452, 3, 4, PL_SC__ORYA } /* sc=orya */, - { 1, 1746, 70, 21, 2, PL_GCB__PP } /* graphemeclusterbreak=pp */, - { 1, 7450, 0, 7, 0, PL_HANO } /* hanunoo */, - { 0, 5375, 6208, 12, 11, PL_JT__C } /* joiningtype=joincausing */, - { 3, 21, 6926, 2, 9, PL_INKHUDAWADI } /* inkhudawadi */, - { 3, 2750, 3223, 4, 3, -PL_TERM } /* term=no */, - { 5, 974, 7727, 24, 2, PL_CCC__32 } /* canonicalcombiningclass=32 */, - { 3, 8816, 8144, 3, 4, PL_NV__1_SLASH_20 } /* nv=1/20 */, - { 1, 6210, 7388, 3, 6, PL_CJKEXTA } /* incjkexta */, - { 0, 568, 0, 2, 0, PL_NB } /* nb */, - { 1, 2229, 1392, 16, 9, PL_CS } /* generalcategory=surrogate */, - { 0, 7408, 0, 7, 0, PL_CJKEXTD } /* cjkextd */, - { 1, 6890, 947, 4, 17, PL_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusic */, - { 0, 1402, 2349, 24, 20, PL_INPC__TOPANDBOTTOMANDRIGHT } /* indicpositionalcategory=topandbottomandright */, - { 0, 1746, 4047, 21, 2, PL_LB__H2 } /* graphemeclusterbreak=lv */, - { 0, 8894, 0, 3, 1, PL_VO__U } /* vo=u */, - { 0, 4554, 1929, 14, 5, PL_SB__UP } /* sentencebreak=upper */, - { 1, 184, 6626, 2, 4, PL_KHAR } /* iskhar */, - { 2, 8344, 36, 3, 1, PL_JT__T } /* jt=t */, - { 1, 8096, 8192, 4, 4, PL_ADLM } /* scx=adlm */, - { 0, 6713, 8879, 3, 3, PL_IN__6_DOT_2 } /* in=v62 */, - { 0, 8352, 0, 4, 0, PL_KHMR } /* khmr */, - { 1, 3129, 2107, 17, 7, PL_SINH } /* scriptextensions=sinhala */, - { 1, 4402, 8401, 3, 3, PL_INMIAO } /* inmiao */, - { 1, 1690, 0, 2, 0, PL_CN } /* cn */, - { 1, 3129, 2269, 17, 20, PL_PHLI } /* scriptextensions=inscriptionalpahlavi */, - { 0, 3129, 7660, 17, 7, PL_TIRH } /* scriptextensions=tirhuta */, - { 3, 3129, 8604, 17, 4, PL_ZYYY } /* scriptextensions=zyyy */, - { 0, 2229, 8937, 16, 2, PL_ZL } /* generalcategory=zl */, - { 1, 2985, 7768, 4, 2, -PL_IDST } /* idst=f */, - { 2, 184, 5427, 2, 9, PL_MLYM } /* ismalayalam */, - { 1, 8376, 8921, 3, 2, PL_LB__BK } /* lb=bk */, - { 0, 6263, 6845, 10, 9, PL_LB__AI } /* linebreak=ambiguous */, - { 2, 3129, 7320, 17, 8, PL_TFNG } /* scriptextensions=tifinagh */, - { 0, 7136, 113, 6, 35, PL_DIACRITICALSFORSYMBOLS } /* block=combiningdiacriticalmarksforsymbols */, - { 1, 864, 0, 28, 0, PL_SUPPUAB } /* supplementaryprivateuseareab */, - { 0, 5957, 0, 4, 0, PL_MEND } /* mend */, - { 2, 7894, 0, 6, 0, PL_PATSYN } /* patsyn */, - { 1, 3129, 494, 17, 3, PL_HAN } /* scriptextensions=han */, - { 3, 1963, 7768, 7, 2, -PL_RADICAL } /* radical=f */, - { 0, 6890, 7876, 4, 6, PL_INLYCIAN } /* blk=lycian */, - { 0, 8572, 6971, 3, 6, PL_WB__MN } /* wb=midnum */, - { 0, 974, 1108, 24, 3, PL_CCC__214 } /* canonicalcombiningclass=ata */, - { 2, 7459, 2044, 3, 11, PL_MTEI } /* sc=meeteimayek */, - { 3, 7288, 2598, 7, 4, PL_MERO } /* script=mero */, - { 1, 184, 7534, 2, 7, PL_NB } /* isnoblock */, - { 0, 6890, 4659, 4, 14, PL_ANCIENTSYMBOLS } /* blk=ancientsymbols */, - { 0, 1887, 0, 9, 0, PL_XPOSIXLOWER } /* lowercase */, - { 4, 4554, 496, 14, 7, PL_LB__NU } /* sentencebreak=numeric */, - { 1, 122, 7997, 9, 2, PL_DIA } /* diacritic=y */, - { 3, 6890, 808, 4, 18, PL_PHONETICEXT } /* blk=phoneticextensions */, - { 1, 3850, 0, 16, 0, PL_MISCMATHSYMBOLSA } /* miscmathsymbolsa */, - { 2, 184, 8384, 2, 4, PL_LINB } /* islinb */, - { 0, 892, 3223, 17, 3, -PL_VS } /* variationselector=no */, - { 0, 5134, 6, 3, 1, PL_PD } /* ispd */, - { 1, 974, 2777, 24, 5, PL_CCC__A } /* canonicalcombiningclass=above */, - { 1, 8011, 1452, 3, 2, PL_PS } /* gc=ps */, - { 0, 21, 4841, 2, 14, PL_LATINEXTB } /* inlatinextendedb */, - { 2, 3237, 0, 17, 0, PL_ALCHEMICAL } /* alchemicalsymbols */, - { 0, 5544, 7732, 13, 6, PL_NV__500000 } /* numericvalue=500000 */, - { 4, 2229, 2088, 16, 2, PL_PD } /* generalcategory=pd */, - { 0, 4479, 7373, 5, 3, PL_NFCQC__M } /* nfkcqc=m */, - { 2, 7136, 959, 6, 5, PL_MUSIC } /* block=music */, - { 1, 7136, 3543, 6, 17, PL_SMALLFORMS } /* block=smallformvariants */, - { 2, 2985, 0, 4, 0, PL_IDST } /* idst */, - { 1, 6881, 0, 9, 0, PL_BHKS } /* bhaiksuki */, - { 0, 217, 6484, 6, 6, PL__PERL_IDCONT } /* _perl_idcont */, - { 4, 58, 0, 4, 0, PL_IDEO } /* ideo */, - { 2, 8340, 3492, 3, 17, PL_JG__MANICHAEANTHAMEDH } /* jg=manichaeanthamedh */, - { 7, 8340, 7930, 3, 4, PL_JG__YUDH } /* jg=yudh */, - { 7, 8376, 6816, 3, 10, PL_LB__WJ } /* lb=wordjoiner */, - { 0, 3129, 4509, 17, 15, PL_SARB } /* scriptextensions=oldsoutharabian */, - { 1, 8376, 5753, 3, 4, PL_LB__GL } /* lb=glue */, - { 1, 184, 4827, 2, 14, PL_KANGXI } /* iskangxiradicals */, - { 1, 1929, 3223, 9, 2, -PL_XPOSIXUPPER } /* uppercase=n */, - { 1, 1746, 5762, 21, 3, PL_LB__ZWJ } /* graphemeclusterbreak=zwj */, - { 0, 7136, 4883, 6, 14, PL_LATINEXTE } /* block=latinextendede */, - { 0, 1963, 3581, 7, 2, PL_RADICAL } /* radical=t */, - { 1, 5645, 4149, 10, 15, PL_BC__CS } /* bidiclass=commonseparator */, - { 1, 2236, 7, 10, 1, PL_L_AMP_ } /* category=lc */, - { 0, 3129, 8364, 17, 4, PL_LANA } /* scriptextensions=lana */, - { 0, 6890, 1691, 9, 11, PL_INDICNUMBERFORMS } /* blk=indicnumberforms */, - { 2, 6647, 534, 4, 2, PL_CANS } /* iscans */, - { 2, 8011, 8941, 3, 2, PL_ZS } /* gc=zs */, - { 0, 6263, 6576, 10, 10, PL_LB__BA } /* linebreak=breakafter */, - { 0, 4314, 3475, 13, 17, PL_JG__MANICHAEANHUNDRED } /* joininggroup=manichaeanhundred */, - { 2, 8096, 8400, 4, 4, PL_MIAO } /* scx=miao */, - { 0, 5134, 809, 3, 17, PL_PHONETICEXT } /* isphoneticextensions */, - { 6, 8076, 7997, 5, 2, PL_PATWS } /* patws=y */, - { 9, 8096, 954, 4, 5, PL_GREK } /* scx=greek */, - { 0, 184, 1111, 2, 4, PL_KANA } /* iskana */, - { 2, 6263, 5762, 10, 2, PL_LB__ZW } /* linebreak=zw */, - { 0, 7136, 2967, 6, 18, PL_GEORGIANSUP } /* block=georgiansupplement */, - { 0, 7136, 4644, 6, 15, PL_INZANABAZARSQUARE } /* block=zanabazarsquare */, - { 5, 6263, 25, 10, 2, PL_LB__SY } /* linebreak=sy */, - { 1, 7136, 7272, 6, 8, PL_INMAHAJANI } /* block=mahajani */, - { 3, 6890, 42, 4, 36, PL_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatibilityideographssupplement */, - { 1, 7136, 2249, 6, 20, PL_GLAGOLITICSUP } /* block=glagoliticsupplement */, - { 3, 3516, 7768, 10, 6, -PL_XPOSIXSPACE } /* whitespace=false */, - { 0, 3521, 7951, 5, 5, PL_XPOSIXSPACE } /* space=true */, - { 1, 5310, 0, 13, 0, PL_XPOSIXDIGIT } /* decimalnumber */, - { 17, 184, 699, 2, 6, PL_N } /* isnumber */, - { 0, 7366, 0, 7, 0, PL_BENG } /* bengali */, - { 0, 5544, 8615, 13, 3, PL_NV__1_SLASH_3 } /* numericvalue=1/3 */, - { 1, 8011, 47, 4, 1, PL_SM } /* gc=sm */, - { 0, 3129, 8444, 17, 4, PL_OLCK } /* scriptextensions=olck */, - { 0, 6210, 3340, 3, 16, PL_CYRILLICEXTB } /* incyrillicextendedb */, - { 3, 7288, 7506, 7, 7, PL_SC__LINA } /* script=lineara */, - { 1, 8096, 7312, 4, 8, PL_TAGB } /* scx=tagbanwa */, - { 0, 7288, 7019, 7, 4, PL_SC__PERM } /* script=perm */, - { 1, 5544, 7944, 13, 2, PL_NV__12 } /* numericvalue=12 */, - { 1, 4284, 7667, 14, 7, PL_HST__NA } /* hangulsyllabletype=na */, - { 4, 1929, 3223, 5, 3, -PL_XPOSIXUPPER } /* upper=no */, - { 1, 6109, 1, 10, 1, PL_CN } /* category=cn */, - { 1, 7380, 8171, 7, 2, PL_CCC__23 } /* ccc=ccc23 */, - { 1, 7288, 7272, 7, 8, PL_SC__MAHJ } /* script=mahajani */, - { 1, 8006, 3223, 5, 3, -PL_CWKCF } /* cwkcf=no */, - { 3, 7136, 8061, 6, 5, PL_INOGHAM } /* block=ogham */, - { 7, 7443, 0, 7, 0, PL_GRAN } /* grantha */, - { 3, 6890, 7232, 4, 8, PL_JAMOEXTA } /* blk=jamoexta */, - { 0, 8096, 8396, 4, 4, PL_MERC } /* scx=merc */, - { 0, 8288, 8834, 3, 3, PL_DT__SQR } /* dt=sqr */, - { 1, 8340, 6580, 3, 3, PL_JG__KAF } /* jg=kaf */, - { 0, 4239, 0, 4, 0, PL_DASH } /* dash */, - { 1, 6263, 4561, 10, 2, PL_LB__EB } /* linebreak=eb */, - { 2, 7136, 1797, 6, 4, PL_INMODI } /* block=modi */, - { 2, 7689, 5246, 3, 12, PL_POSIXXDIGIT } /* isasciihexdigit */, - { 1, 6890, 7632, 4, 7, PL_INTAGALOG } /* blk=tagalog */, - { 1, 8340, 5163, 3, 14, PL_JG__HAMZAONHEHGOAL } /* jg=tehmarbutagoal */, - { 0, 2985, 3581, 4, 2, PL_IDST } /* idst=t */, - { 4, 6890, 2805, 4, 18, PL_HALFMARKS } /* blk=combininghalfmarks */, - { 3, 6890, 3594, 4, 9, PL_ARABICSUP } /* blk=arabicsup */, - { 0, 1897, 3223, 21, 3, -PL_CWT } /* changeswhentitlecased=no */, - { 3, 6210, 5694, 3, 11, PL_CYRILLICEXTB } /* incyrillicextb */, - { 0, 7459, 7632, 3, 7, PL_SC__TGLG } /* sc=tagalog */, - { 0, 4542, 8112, 3, 4, PL_TAKR } /* istakri */, - { 1, 5134, 1134, 3, 25, PL_PCM } /* isprependedconcatenationmark */, - { 7, 4314, 4344, 13, 15, PL_JG__MANICHAEANALEPH } /* joininggroup=manichaeanaleph */, - { 0, 7136, 3882, 6, 7, PL_INMYANMAR } /* block=myanmar */, - { 0, 184, 1768, 2, 22, PL_MISCTECHNICAL } /* ismiscellaneoustechnical */, - { 6, 7478, 7612, 3, 6, PL_SOYO } /* issoyombo */, - { 1, 8786, 1093, 3, 9, PL_EA__F } /* ea=fullwidth */, - { 0, 3114, 1, 3, 33, PL_UCAS } /* inunifiedcanadianaboriginalsyllabics */, - { 0, 21, 8432, 2, 3, PL_INNKO } /* innko */, - { 17, 3129, 8106, 17, 5, PL_TALE } /* scriptextensions=taile */, - { 0, 184, 1887, 2, 5, PL_XPOSIXLOWER } /* islower */, - { 5, 7136, 1028, 6, 27, PL_OCR } /* block=opticalcharacterrecognition */, - { 2, 8572, 0, 4, 1, PL_WB__NU } /* wb=nu */, - { 3, 5250, 7997, 8, 4, PL_XPOSIXXDIGIT } /* hexdigit=yes */, - { 0, 1834, 7997, 21, 2, PL_CWCF } /* changeswhencasefolded=y */, - { 2, 6713, 7720, 3, 1, PL_IN__4 } /* in=4 */, - { 1, 8448, 0, 4, 0, PL_ORKH } /* orkh */, - { 2, 5544, 7732, 13, 4, PL_NV__5000 } /* numericvalue=5000 */, - { 0, 184, 7429, 2, 7, PL_DSRT } /* isdeseret */, - { 0, 6890, 7007, 4, 9, PL_INOLDITALIC } /* blk=olditalic */, - { 2, 1417, 6362, 9, 11, PL_SO } /* category=othersymbol */, - { 0, 6890, 6, 5, 2, PL_INIDC } /* blk=idc */, - { 1, 6890, 183, 4, 34, PL_MISCPICTOGRAPHS } /* blk=miscellaneoussymbolsandpictographs */, - { 1, 184, 1107, 2, 26, PL_KATAKANAEXT } /* iskatakanaphoneticextensions */, - { 1, 184, 8396, 2, 4, PL_MERC } /* ismerc */, - { 0, 4554, 723, 15, 4, PL_SB__CL } /* sentencebreak=close */, - { 2, 117, 416, 3, 31, PL_INIDC } /* inideographicdescriptioncharacters */, - { 8, 5134, 8461, 3, 3, PL_PHLP } /* isphlp */, - { 0, 4554, 8101, 14, 5, PL_SB__ST } /* sentencebreak=sterm */, - { 0, 8096, 8320, 4, 4, PL_HLUW } /* scx=hluw */, - { 6, 7288, 8368, 7, 4, PL_LAO } /* script=laoo */, - { 1, 974, 8171, 24, 2, PL_CCC__23 } /* canonicalcombiningclass=23 */, - { 1, 4449, 7373, 4, 3, PL_NFCQC__M } /* nfcqc=m */, - { 0, 6890, 6863, 4, 9, PL_ARABICPFA } /* blk=arabicpfa */, - { 5, 7288, 7604, 7, 7, PL_SIDD } /* script=siddham */, - { 1, 6890, 7621, 4, 3, PL_PUA } /* blk=pua */, - { 1, 6706, 8768, 10, 3, PL_IN__9 } /* presentin=9.0 */, - { 0, 6647, 2, 5, 1, PL_CARI } /* iscari */, - { 4, 2859, 3003, 18, 7, PL_DT__INIT } /* decompositiontype=initial */, - { 3, 8816, 5219, 3, 13, PL_NV__1000000000000 } /* nv=1000000000000 */, - { 2, 8288, 5488, 3, 4, PL_DT__NONE } /* dt=none */, - { 0, 974, 7702, 27, 2, PL_CCC__20 } /* canonicalcombiningclass=ccc20 */, - { 0, 7906, 5066, 5, 2, PL_SC__KHOJ } /* sc=khoj */, - { 0, 2229, 5079, 16, 14, PL_MN } /* generalcategory=nonspacingmark */, - { 2, 6554, 1498, 3, 13, PL_BYZANTINEMUSIC } /* inbyzantinemusic */, - { 0, 1497, 0, 14, 0, PL_BYZANTINEMUSIC } /* byzantinemusic */, - { 5, 8096, 7660, 4, 4, PL_TIRH } /* scx=tirh */, - { 4, 184, 8608, 2, 4, PL_ZZZZ } /* iszzzz */, - { 0, 3129, 7555, 17, 7, PL_OLCK } /* scriptextensions=olchiki */, - { 3, 8096, 8061, 4, 5, PL_OGAM } /* scx=ogham */, - { 1, 7459, 7120, 3, 4, PL_BALI } /* sc=bali */, - { 4, 8508, 8369, 4, 3, PL_LAO } /* sc=laoo */, - { 1, 7288, 7569, 7, 4, PL_OSMA } /* script=osma */, - { 2, 8086, 3223, 5, 3, -PL_QMARK } /* qmark=no */, - { 1, 7478, 1451, 3, 23, PL_SUPSYMBOLSANDPICTOGRAPHS } /* issupsymbolsandpictographs */, - { 0, 76, 7946, 2, 5, PL_NV__NAN } /* nt=none */, - { 0, 7459, 4104, 3, 4, PL_BAMU } /* sc=bamu */, - { 0, 8011, 8263, 3, 2, PL_MC } /* gc=mc */, - { 1, 8016, 8789, 4, 3, PL_WB__EBG } /* gcb=ebg */, - { 0, 8026, 5094, 3, 13, PL_PHONETICEXTSUP } /* inphoneticextsup */, - { 1, 7459, 7912, 3, 6, PL_SC__TELU } /* sc=telugu */, - { 3, 7459, 3458, 3, 10, PL_SC__MANI } /* sc=manichaean */, - { 1, 6890, 2249, 4, 13, PL_GLAGOLITICSUP } /* blk=glagoliticsup */, - { 3, 4284, 5177, 14, 14, PL_GCB__V } /* hangulsyllabletype=voweljamo */, - { 3, 7272, 0, 8, 0, PL_MAHJ } /* mahajani */, - { 2, 8240, 3408, 4, 16, PL_BC__ES } /* bc=europeanseparator */, - { 6, 7227, 5253, 5, 5, PL_POSIXDIGIT } /* posixdigit */, - { 2, 6263, 1204, 10, 2, PL_LB__PO } /* linebreak=po */, - { 11, 7478, 2732, 3, 18, PL_SUPARROWSC } /* issupplementalarrowsc */, - { 0, 112, 0, 2, 0, PL_SC } /* sc */, - { 2, 7288, 7611, 7, 4, PL_SOYO } /* script=soyo */, - { 0, 7224, 7986, 8, 5, PL_XPOSIXBLANK } /* isxposixblank */, - { 1, 2731, 0, 19, 0, PL_SUPARROWSC } /* supplementalarrowsc */, - { 0, 6613, 3723, 3, 15, PL_HIGHPUSURROGATES } /* ishighpusurrogates */, - { 4, 8777, 7997, 3, 2, PL_CWL } /* cwl=y */, - { 0, 8288, 45, 3, 6, PL_DT__COM } /* dt=compat */, - { 0, 34, 7768, 3, 2, -PL_EXT } /* ext=f */, - { 0, 3373, 8576, 15, 4, PL_EA__W } /* eastasianwidth=wide */, - { 3, 7288, 8472, 7, 4, PL_PRTI } /* script=prti */, - { 5, 6890, 3994, 4, 16, PL_SYRIACSUP } /* blk=syriacsupplement */, - { 0, 21, 6626, 2, 10, PL_INKHAROSHTHI } /* inkharoshthi */, - { 0, 6713, 8660, 3, 3, PL_IN__2_DOT_1 } /* in=2.1 */, - { 0, 6890, 2128, 4, 6, PL_YIJING } /* blk=yijing */, - { 1, 8798, 7997, 3, 2, PL_LOE } /* loe=y */, - { 0, 6484, 7951, 10, 5, PL_IDC } /* idcontinue=true */, - { 2, 3129, 8432, 17, 4, PL_NKO } /* scriptextensions=nkoo */, - { 0, 2859, 8292, 18, 4, PL_DT__FONT } /* decompositiontype=font */, - { 0, 8026, 6450, 5, 11, PL_INPC__TOPANDRIGHT } /* inpc=topandright */, - { 0, 7380, 8740, 4, 2, PL_CCC__25 } /* ccc=25 */, - { 1, 8240, 806, 3, 2, PL_BC__WS } /* bc=ws */, - { 0, 6890, 8056, 4, 5, PL_INNUSHU } /* blk=nushu */, - { 1, 6890, 1658, 4, 19, PL_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatideographs */, - { 0, 184, 2531, 2, 4, PL_MULT } /* ismult */, - { 0, 8096, 8368, 4, 3, PL_LAO } /* scx=lao */, - { 3, 8204, 7997, 4, 4, PL_POSIXXDIGIT } /* ahex=yes */, - { 2, 1426, 1330, 22, 24, PL_INSC__CONSONANTSUCCEEDINGREPHA } /* indicsyllabiccategory=consonantsucceedingrepha */, - { 0, 221, 0, 2, 0, PL_L_AMP_ } /* l_ */, - { 0, 7288, 3674, 7, 7, PL_SC__CPRT } /* script=cypriot */, - { 0, 7840, 25, 3, 1, PL_VS } /* isvs */, - { 0, 184, 74, 2, 2, PL_ME } /* isme */, - { 1, 1417, 3854, 9, 10, PL_SM } /* category=mathsymbol */, - { 7, 5544, 8140, 13, 4, PL_NV__1_SLASH_10 } /* numericvalue=1/10 */, - { 0, 8011, 133, 3, 4, PL_M } /* gc=mark */, - { 0, 2134, 7997, 3, 2, PL_XPOSIXXDIGIT } /* hex=y */, - { 0, 7459, 7043, 3, 4, PL_PAUC } /* sc=pauc */, - { 16, 8816, 7710, 3, 3, PL_NV__600 } /* nv=600 */, - { 5, 949, 7768, 2, 6, -PL_CI } /* ci=false */, - { 1, 7288, 8071, 7, 5, PL_OSGE } /* script=osage */, - { 3, 8096, 8432, 4, 4, PL_NKO } /* scx=nkoo */, - { 1, 113, 0, 25, 0, PL_DIACRITICALS } /* combiningdiacriticalmarks */, - { 1, 184, 8296, 2, 4, PL_GONM } /* isgonm */, - { 1, 7288, 7590, 7, 7, PL_SC__SHRD } /* script=sharada */, - { 0, 2236, 0, 10, 0, PL_L } /* category=l */, - { 2, 6890, 3560, 4, 17, PL_SUTTONSIGNWRITING } /* blk=suttonsignwriting */, - { 1, 5245, 3223, 13, 3, -PL_POSIXXDIGIT } /* asciihexdigit=no */, - { 8, 5645, 2086, 10, 21, PL_BC__PDI } /* bidiclass=popdirectionalisolate */, - { 3, 4542, 8549, 3, 3, PL_TFNG } /* istfng */, - { 4, 6263, 184, 10, 2, PL_LB__IS } /* linebreak=is */, - { 1, 1929, 3223, 5, 2, -PL_XPOSIXUPPER } /* upper=n */, - { 1, 7136, 6029, 6, 8, PL_PHAISTOS } /* block=phaistos */, - { 2, 3526, 3223, 17, 2, -PL_RI } /* regionalindicator=n */, - { 1, 1417, 1886, 9, 2, PL_NL } /* category=nl */, - { 3, 8096, 1680, 4, 6, PL_ZYYY } /* scx=common */, - { 4, 21, 7534, 2, 7, PL_NB } /* innoblock */, - { 11, 6890, 7583, 4, 7, PL_INPHAGSPA } /* blk=phagspa */, - { 5, 7288, 7336, 7, 8, PL_UGAR } /* script=ugaritic */, - { 1, 184, 8480, 2, 4, PL_QAAI } /* isqaai */, - { 0, 184, 3675, 3, 6, PL_CPRT } /* iscypriot */, - { 0, 5544, 8180, 13, 3, PL_NV__3_SLASH_8 } /* numericvalue=3/8 */, - { 0, 7136, 3898, 6, 16, PL_MYANMAREXTB } /* block=myanmarextendedb */, - { 11, 132, 0, 2, 0, PL_LM } /* lm */, - { 3, 1448, 2676, 4, 7, PL_INSUNDANESE } /* insundanese */, - { 0, 1028, 0, 27, 0, PL_OCR } /* opticalcharacterrecognition */, - { 1, 5765, 7768, 12, 2, -PL_GRBASE } /* graphemebase=f */, - { 2, 1107, 0, 26, 0, PL_KATAKANAEXT } /* katakanaphoneticextensions */, - { 3, 96, 0, 5, 0, PL_XPOSIXALPHA } /* alpha */, - { 2, 6890, 183, 4, 20, PL_MISCSYMBOLS } /* blk=miscellaneoussymbols */, - { 2, 5645, 4121, 12, 13, PL_BC__BN } /* bidiclass=boundaryneutral */, - { 5, 8096, 8216, 4, 4, PL_ARMI } /* scx=armi */, - { 0, 974, 8645, 24, 3, PL_CCC__129 } /* canonicalcombiningclass=129 */, - { 0, 4923, 5947, 4, 10, PL_MATHALPHANUM } /* inmathalphanum */, - { 4, 974, 8687, 24, 3, PL_CCC__R } /* canonicalcombiningclass=226 */, - { 0, 7136, 5414, 6, 13, PL_LOWSURROGATES } /* block=lowsurrogates */, - { 1, 6472, 7352, 10, 7, PL_WB__LE } /* wordbreak=aletter */, - { 5, 7828, 7997, 6, 4, PL_HYPHEN } /* hyphen=yes */, - { 0, 3129, 6881, 17, 9, PL_BHKS } /* scriptextensions=bhaiksuki */, - { 0, 1702, 0, 12, 0, PL_DIACRITICALS } /* diacriticals */, - { 0, 7288, 8420, 7, 4, PL_NARB } /* script=narb */, - { 0, 8340, 6494, 3, 11, PL_JG__YEHWITHTAIL } /* jg=yehwithtail */, - { 0, 184, 5801, 2, 5, PL_KHMR } /* iskhmer */, - { 0, 1450, 0, 24, 0, PL_SUPSYMBOLSANDPICTOGRAPHS } /* supsymbolsandpictographs */, - { 0, 295, 0, 2, 0, PL_SM } /* sm */, - { 5, 7478, 218, 7, 4, PL_XPOSIXSPACE } /* isspaceperl */, - { 1, 4554, 33, 14, 2, PL_SB__SE } /* sentencebreak=se */, - { 0, 21, 3770, 2, 16, PL_LINEARBSYLLABARY } /* inlinearbsyllabary */, - { 5, 8476, 0, 4, 0, PL_COPT } /* qaac */, - { 1, 4314, 7961, 13, 5, PL_JG__ALAPH } /* joininggroup=alaph */, - { 1, 8786, 8576, 3, 4, PL_EA__W } /* ea=wide */, - { 1, 6210, 43, 3, 2, PL_CJK } /* incjk */, - { 0, 8822, 0, 3, 0, PL_PCM } /* pcm */, - { 1, 7478, 6787, 3, 9, PL_SUPARROWSC } /* issuparrowsc */, - { 1, 5645, 25, 10, 1, PL_BC__S } /* bidiclass=s */, - { 3, 2229, 6340, 16, 11, PL_LO } /* generalcategory=otherletter */, - { 1, 7288, 2636, 7, 9, PL_SC__MONG } /* script=mongolian */, - { 1, 7459, 8268, 3, 4, PL_SC__CPRT } /* sc=cprt */, - { 9, 974, 7708, 24, 3, PL_CCC__216 } /* canonicalcombiningclass=216 */, - { 0, 8340, 3834, 3, 16, PL_JG__MANICHAEANTWENTY } /* jg=manichaeantwenty */, - { 3, 6647, 12, 5, 3, PL_CARI } /* iscarian */, - { 0, 8376, 5762, 3, 3, PL_LB__ZWJ } /* lb=zwj */, - { 2, 6890, 1028, 4, 27, PL_OCR } /* blk=opticalcharacterrecognition */, - { 2, 6890, 1566, 4, 6, PL_INHANGUL } /* blk=hangul */, - { 0, 8011, 3003, 3, 18, PL_PI } /* gc=initialpunctuation */, - { 2, 184, 2636, 2, 12, PL_MONGOLIANSUP } /* ismongoliansup */, - { 1, 8196, 8747, 4, 3, PL_AGE__6 } /* age=6.0 */, - { 0, 8196, 8846, 4, 3, PL_AGE__2_DOT_1 } /* age=v21 */, - { 0, 7459, 8400, 3, 4, PL_MIAO } /* sc=miao */, - { 1, 4209, 0, 15, 0, PL_CONTROLPICTURES } /* controlpictures */, - { 0, 8444, 0, 4, 0, PL_OLCK } /* olck */, - { 0, 8026, 809, 3, 10, PL_PHONETICEXT } /* inphoneticext */, - { 1, 6890, 1797, 4, 15, PL_MODIFIERLETTERS } /* blk=modifierletters */, - { 0, 1503, 721, 3, 20, PL_ENCLOSEDALPHANUM } /* inenclosedalphanumerics */, - { 4, 7224, 8001, 8, 5, PL_XPOSIXCNTRL } /* isxposixcntrl */, - { 1, 7459, 3610, 3, 4, PL_SC__BOPO } /* sc=bopo */, - { 2, 6890, 7272, 4, 8, PL_INMAHAJANI } /* blk=mahajani */, - { 9, 892, 0, 18, 0, PL_INVS } /* variationselectors */, - { 1, 6616, 7997, 10, 2, PL_DEP } /* deprecated=y */, - { 3, 6890, 5427, 4, 9, PL_INMALAYALAM } /* blk=malayalam */, - { 11, 1417, 8263, 9, 2, PL_MC } /* category=mc */, - { 4, 3521, 7997, 5, 4, PL_XPOSIXSPACE } /* space=yes */, - { 1, 8096, 3754, 4, 7, PL_LINB } /* scx=linearb */, - { 0, 184, 8368, 2, 4, PL_LAO } /* islaoo */, - { 0, 4883, 0, 14, 0, PL_LATINEXTE } /* latinextendede */, - { 0, 7380, 7727, 4, 2, PL_CCC__32 } /* ccc=32 */, - { 0, 1566, 0, 23, 0, PL_COMPATJAMO } /* hangulcompatibilityjamo */, - { 0, 7696, 7768, 6, 6, -PL_XPOSIXSPACE } /* wspace=false */, - { 0, 8376, 8927, 3, 2, PL_GCB__L } /* lb=jl */, - { 1, 1402, 5271, 24, 13, PL_INPC__BOTTOMANDLEFT } /* indicpositionalcategory=bottomandleft */, - { 0, 6890, 720, 4, 21, PL_ENCLOSEDALPHANUM } /* blk=enclosedalphanumerics */, - { 0, 5375, 0, 13, 0, PL_JT__D } /* joiningtype=d */, - { 1, 2389, 0, 19, 0, PL_ANCIENTGREEKNUMBERS } /* ancientgreeknumbers */, - { 0, 7136, 4105, 7, 14, PL_BAMUMSUP } /* block=bamumsupplement */, - { 0, 184, 541, 3, 29, PL_CJKEXTB } /* iscjkunifiedideographsextensionb */, - { 0, 7906, 2098, 4, 3, PL_SC__KALI } /* sc=kali */, - { 0, 2229, 3914, 16, 5, PL_C } /* generalcategory=other */, - { 3, 2369, 1548, 20, 2, PL_VO__TR } /* verticalorientation=tr */, - { 1, 3129, 6989, 17, 9, PL_TALU } /* scriptextensions=newtailue */, - { 1, 7227, 6472, 5, 4, PL_POSIXWORD } /* posixword */, - { 2, 5645, 3516, 10, 10, PL_BC__WS } /* bidiclass=whitespace */, - { 2, 8096, 7192, 4, 8, PL_GUJR } /* scx=gujarati */, - { 3, 8795, 4615, 3, 7, PL_VEDICEXT } /* invedicext */, - { 0, 6890, 3962, 4, 16, PL_SUPMATHOPERATORS } /* blk=supmathoperators */, - { 6, 6980, 0, 9, 0, PL_NBAT } /* nabataean */, - { 0, 8096, 8488, 4, 4, PL_RJNG } /* scx=rjng */, - { 2, 1448, 3965, 5, 13, PL_SUPMATHOPERATORS } /* insupmathoperators */, - { 2, 6890, 5258, 4, 13, PL_BLOCKELEMENTS } /* blk=blockelements */, - { 1, 3129, 8596, 17, 4, PL_ZANB } /* scriptextensions=zanb */, - { 1, 2750, 7997, 4, 2, PL_TERM } /* term=y */, - { 1, 7288, 7912, 7, 6, PL_SC__TELU } /* script=telugu */, - { 3, 184, 2877, 2, 10, PL_DEVA } /* isdevanagari */, - { 1, 7459, 4010, 3, 6, PL_TANG } /* sc=tangut */, - { 4, 8096, 8560, 4, 4, PL_TIBT } /* scx=tibt */, - { 1, 7288, 8476, 7, 4, PL_SC__COPT } /* script=qaac */, - { 3, 7288, 6676, 7, 10, PL_XPEO } /* script=oldpersian */, - { 1, 184, 691, 3, 15, PL_CUNEIFORMNUMBERS } /* iscuneiformnumbers */, - { 1, 5544, 7720, 13, 6, PL_NV__400000 } /* numericvalue=400000 */, - { 0, 184, 7248, 2, 4, PL_JAVA } /* isjava */, - { 0, 8504, 7070, 3, 9, PL_SB__SC } /* sb=scontinue */, - { 2, 7345, 0, 7, 0, PL_IDS } /* idstart */, - { 0, 7136, 1566, 6, 23, PL_COMPATJAMO } /* block=hangulcompatibilityjamo */, - { 8, 8816, 8643, 3, 2, PL_NV__22 } /* nv=22 */, - { 1, 7459, 4784, 3, 4, PL_CHAM } /* sc=cham */, - { 0, 2985, 7997, 3, 2, PL_IDS } /* ids=y */, - { 3, 8196, 8564, 4, 4, PL_AGE__10 } /* age=v100 */, - { 0, 4314, 5885, 13, 12, PL_JG__MALAYALAMNYA } /* joininggroup=malayalamnya */, - { 6, 3129, 7034, 17, 4, PL_PALM } /* scriptextensions=palm */, - { 2, 7380, 6131, 4, 11, PL_CCC__DA } /* ccc=doubleabove */, - { 0, 5544, 8691, 13, 2, PL_NV__28 } /* numericvalue=28 */, - { 0, 8096, 8408, 4, 4, PL_MRO } /* scx=mroo */, - { 2, 217, 6854, 6, 9, PL__PERL_ANY_FOLDS } /* _perl_any_folds */, - { 7, 3129, 7429, 17, 7, PL_DSRT } /* scriptextensions=deseret */, - { 0, 7478, 3758, 3, 3, PL_SARB } /* issarb */, - { 17, 7870, 0, 6, 0, PL_LEPC } /* lepcha */, - { 0, 6890, 4869, 4, 14, PL_LATINEXTD } /* blk=latinextendedd */, - { 1, 8288, 7888, 3, 6, PL_DT__NAR } /* dt=narrow */, - { 3, 3129, 7336, 17, 4, PL_UGAR } /* scriptextensions=ugar */, - { 6, 6890, 2598, 4, 19, PL_MERO } /* blk=meroitichieroglyphs */, - { 0, 8016, 34, 4, 2, PL_GREXT } /* gcb=ex */, - { 2, 8580, 0, 4, 0, PL_XPEO } /* xpeo */, - { 0, 7288, 8516, 7, 4, PL_SGNW } /* script=sgnw */, - { 1, 8376, 5772, 3, 5, PL_LB__EB } /* lb=ebase */, - { 5, 184, 3898, 2, 16, PL_MYANMAREXTB } /* ismyanmarextendedb */, - { 1, 8816, 7720, 3, 6, PL_NV__400000 } /* nv=400000 */, - { 2, 3129, 8580, 17, 4, PL_XPEO } /* scriptextensions=xpeo */, - { 0, 184, 8404, 2, 4, PL_MLYM } /* ismlym */, - { 0, 750, 0, 29, 0, PL_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsupplement */, - { 0, 1426, 5993, 22, 12, PL_INSC__NUMBERJOINER } /* indicsyllabiccategory=numberjoiner */, - { 2, 8816, 7750, 3, 2, PL_NV__80 } /* nv=80 */, - { 1, 7840, 8569, 3, 3, PL_VAI } /* isvaii */, - { 2, 7136, 7506, 6, 7, PL_INLINEARA } /* block=lineara */, - { 2, 186, 3581, 2, 2, PL_CE } /* ce=t */, - { 2, 184, 3850, 2, 16, PL_MISCMATHSYMBOLSA } /* ismiscmathsymbolsa */, - { 4, 7288, 7208, 7, 4, PL_SC__HIRA } /* script=hira */, - { 2, 42, 0, 3, 0, PL_CJK } /* cjk */, - { 5, 7288, 2598, 7, 19, PL_MERO } /* script=meroitichieroglyphs */, - { 1, 7061, 0, 9, 0, PL_SAMR } /* samaritan */, - { 2, 1887, 7997, 5, 2, PL_XPOSIXLOWER } /* lower=y */, - { 1, 4923, 363, 4, 19, PL_MATHOPERATORS } /* inmathematicaloperators */, - { 3, 1402, 2355, 24, 6, PL_INPC__BOTTOM } /* indicpositionalcategory=bottom */, - { 0, 6890, 7436, 4, 7, PL_INELBASAN } /* blk=elbasan */, - { 0, 3129, 3754, 17, 7, PL_LINB } /* scriptextensions=linearb */, - { 0, 8572, 34, 3, 2, PL_WB__EX } /* wb=ex */, - { 0, 8504, 1887, 3, 5, PL_SB__LO } /* sb=lower */, - { 1, 5051, 3223, 14, 2, PL_NFKDQC__N } /* nfkdquickcheck=n */, - { 0, 6263, 96, 10, 10, PL_LB__AL } /* linebreak=alphabetic */, - { 0, 7459, 8428, 3, 4, PL_NEWA } /* sc=newa */, - { 0, 7689, 80, 4, 8, PL_ARABICMATH } /* isarabicmath */, - { 0, 184, 7120, 2, 8, PL_BALI } /* isbalinese */, - { 1, 5134, 7896, 4, 4, PL_PATSYN } /* ispatsyn */, - { 0, 5134, 850, 3, 13, PL_PUA } /* isprivateusearea */, - { 1, 3129, 8284, 17, 4, PL_DSRT } /* scriptextensions=dsrt */, - { 0, 3129, 8091, 17, 5, PL_RUNR } /* scriptextensions=runic */, - { 16, 6706, 7756, 10, 1, PL_IN__9 } /* presentin=9 */, - { 8, 3129, 7436, 17, 7, PL_ELBA } /* scriptextensions=elbasan */, - { 0, 5645, 0, 5, 0, PL_BIDIC } /* bidic */, - { 0, 8340, 7864, 3, 6, PL_JG__LAMADH } /* jg=lamadh */, - { 0, 4269, 0, 15, 0, PL_DIACRITICALSSUP } /* diacriticalssup */, - { 0, 8288, 2991, 3, 3, PL_DT__NAR } /* dt=nar */, - { 1, 7288, 3566, 7, 11, PL_SGNW } /* script=signwriting */, - { 1, 974, 8648, 24, 3, PL_CCC__130 } /* canonicalcombiningclass=130 */, - { 2, 6713, 8882, 3, 3, PL_IN__6_DOT_3 } /* in=v63 */, - { 4, 8011, 3086, 5, 7, PL_Z } /* gc=separator */, - { 6, 2229, 698, 16, 2, PL_MN } /* generalcategory=mn */, - { 2, 6890, 3610, 4, 16, PL_BOPOMOFOEXT } /* blk=bopomofoextended */, - { 1, 6890, 7912, 4, 6, PL_INTELUGU } /* blk=telugu */, - { 2, 7696, 3223, 6, 3, -PL_XPOSIXSPACE } /* wspace=no */, - { 3, 7459, 1540, 3, 4, PL_SC__PHAG } /* sc=phag */, - { 2, 6890, 630, 4, 30, PL_CJKEXTE } /* blk=cjkunifiedideographsextensione */, - { 6, 7464, 3521, 7, 5, PL_XPOSIXBLANK } /* ishorizspace */, - { 0, 7136, 3706, 6, 16, PL_HALFANDFULLFORMS } /* block=halfandfullforms */, - { 2, 6208, 7997, 5, 4, PL_JOINC } /* joinc=yes */, - { 2, 630, 0, 30, 0, PL_CJKEXTE } /* cjkunifiedideographsextensione */, - { 1, 3288, 0, 17, 0, PL_AGHB } /* caucasianalbanian */, - { 0, 7136, 3866, 6, 16, PL_MISCMATHSYMBOLSB } /* block=miscmathsymbolsb */, - { 1, 8816, 7708, 3, 6, PL_NV__216000 } /* nv=216000 */, - { 8, 8200, 0, 4, 0, PL_AGHB } /* aghb */, - { 1, 7136, 1450, 6, 24, PL_SUPSYMBOLSANDPICTOGRAPHS } /* block=supsymbolsandpictographs */, - { 7, 184, 479, 2, 31, PL_MATHALPHANUM } /* ismathematicalalphanumericsymbols */, - { 4, 7459, 1401, 3, 4, PL_SC__SIND } /* sc=sind */, - { 4, 7459, 4644, 3, 15, PL_ZANB } /* sc=zanabazarsquare */, - { 1, 6890, 1497, 4, 23, PL_BYZANTINEMUSIC } /* blk=byzantinemusicalsymbols */, - { 0, 6029, 0, 12, 0, PL_PHAISTOS } /* phaistosdisc */, - { 9, 6706, 5219, 10, 2, PL_IN__10 } /* presentin=10 */, - { 1, 8816, 8148, 3, 3, PL_NV__1_SLASH_4 } /* nv=1/4 */, - { 4, 5645, 32, 10, 2, PL_BC__CS } /* bidiclass=cs */, - { 0, 5544, 7732, 13, 5, PL_NV__50000 } /* numericvalue=50000 */, - { 3, 7136, 947, 6, 17, PL_ANCIENTGREEKMUSIC } /* block=ancientgreekmusic */, - { 1, 513, 7997, 16, 2, PL_UIDEO } /* unifiedideograph=y */, - { 2, 62, 0, 5, 0, PL_XPOSIXGRAPH } /* graph */, - { 2, 4554, 1887, 14, 5, PL_SB__LO } /* sentencebreak=lower */, - { 1, 184, 691, 3, 8, PL_XSUX } /* iscuneiform */, - { 2, 184, 1497, 2, 23, PL_BYZANTINEMUSIC } /* isbyzantinemusicalsymbols */, - { 0, 5544, 7714, 13, 4, PL_NV__3000 } /* numericvalue=3000 */, - { 0, 6263, 5763, 10, 2, PL_LB__WJ } /* linebreak=wj */, - { 2, 8783, 0, 3, 0, PL_CWU } /* cwu */, - { 1, 5051, 8256, 5, 3, PL_NFKDQC__N } /* nfkdqc=n */, - { 1, 8816, 8897, 3, 2, PL_NV__19 } /* nv=19 */, - { 0, 8524, 0, 4, 0, PL_SHRD } /* shrd */, - { 3, 8096, 2098, 5, 3, PL_BALI } /* scx=bali */, - { 1, 6221, 1308, 4, 22, PL_DIACRITICALSFORSYMBOLS } /* incombiningmarksforsymbols */, - { 0, 7136, 42, 6, 36, PL_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatibilityideographssupplement */, - { 1, 6109, 1628, 10, 6, PL_XPOSIXCNTRL } /* category=control */, - { 1, 1417, 4524, 9, 15, PL_PS } /* category=openpunctuation */, - { 0, 5968, 7556, 3, 6, PL_OLCK } /* inolchiki */, - { 0, 1184, 3581, 25, 2, PL_DI } /* defaultignorablecodepoint=t */, - { 4, 7828, 7768, 6, 6, -PL_HYPHEN } /* hyphen=false */, - { 0, 6890, 2895, 4, 8, PL_INETHIOPIC } /* blk=ethiopic */, - { 1, 58, 7951, 4, 5, PL_IDEO } /* ideo=true */, - { 1, 2990, 1236, 4, 22, PL_ARABICPFA } /* inarabicpresentationformsa */, - { 0, 3129, 8569, 18, 3, PL_VAI } /* scriptextensions=vaii */, - { 1, 6890, 1790, 4, 22, PL_MODIFIERLETTERS } /* blk=spacingmodifierletters */, - { 5, 184, 7696, 2, 6, PL_XPOSIXSPACE } /* iswspace */, - { 0, 6210, 7423, 3, 6, PL_CJKEXTF } /* incjkextf */, - { 2, 7288, 2107, 7, 4, PL_SC__SINH } /* script=sinh */, - { 2, 8340, 4981, 3, 14, PL_JG__MANICHAEANQOPH } /* jg=manichaeanqoph */, - { 5, 8340, 4935, 3, 4, PL_JG__BETH } /* jg=beth */, - { 2, 7457, 3914, 5, 5, PL_INSC__OTHER } /* insc=other */, - { 0, 7459, 358, 4, 3, PL_ITAL } /* sc=ital */, - { 0, 8816, 7702, 3, 6, PL_NV__200000 } /* nv=200000 */, - { 0, 7689, 5316, 3, 4, PL_XPOSIXALNUM } /* isalnum */, - { 4, 7288, 78, 7, 4, PL_SC__ARAB } /* script=arab */, - { 1, 6890, 7128, 4, 8, PL_INBASSAVAH } /* blk=bassavah */, - { 0, 6890, 3706, 4, 16, PL_HALFANDFULLFORMS } /* blk=halfandfullforms */, - { 1, 2229, 4224, 16, 14, PL_SC } /* generalcategory=currencysymbol */, - { 3, 2229, 206, 16, 2, PL_PI } /* generalcategory=pi */, - { 1, 8096, 6882, 5, 8, PL_BHKS } /* scx=bhaiksuki */, - { 2, 7380, 2295, 4, 5, PL_CCC__R } /* ccc=right */, - { 2, 3129, 8264, 17, 4, PL_CANS } /* scriptextensions=cans */, - { 2, 949, 0, 2, 0, PL_CI } /* ci */, - { 0, 8096, 2895, 4, 4, PL_ETHI } /* scx=ethi */, - { 0, 34, 0, 3, 0, PL_EXT } /* ext */, - { 1, 7459, 1160, 3, 4, PL_SC__HANG } /* sc=hang */, - { 2, 6890, 4494, 4, 15, PL_NARB } /* blk=oldnortharabian */, - { 1, 1206, 8117, 3, 4, PL_INTAMIL } /* intamil */, - { 8, 1892, 7951, 5, 5, PL_CASED } /* cased=true */, - { 2, 3509, 7997, 17, 2, PL_PATWS } /* patternwhitespace=y */, - { 3, 5544, 8729, 13, 3, PL_NV__4_SLASH_5 } /* numericvalue=4/5 */, - { 0, 7128, 0, 8, 0, PL_BASS } /* bassavah */, - { 0, 5544, 7702, 13, 6, PL_NV__200000 } /* numericvalue=200000 */, - { 0, 5557, 3223, 13, 3, -PL_PATSYN } /* patternsyntax=no */, - { 1, 1963, 7997, 7, 2, PL_RADICAL } /* radical=y */, - { 4, 4074, 7976, 15, 5, PL__PERL_CHARNAME_BEGIN } /* _perl_charname_begin */, - { 4, 1448, 2108, 3, 6, PL_INSINHALA } /* insinhala */, - { 5, 8816, 7942, 3, 4, PL_NV__1_SLASH_12 } /* nv=1/12 */, - { 0, 7136, 6428, 6, 11, PL_SUPERANDSUB } /* block=superandsub */, - { 0, 2750, 7997, 4, 4, PL_TERM } /* term=yes */, - { 8, 184, 17, 3, 1, PL_CO } /* isco */, - { 1, 7288, 8200, 7, 4, PL_AGHB } /* script=aghb */, - { 1, 184, 1659, 3, 21, PL_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatideographssup */, - { 2, 5544, 8666, 13, 3, PL_NV__2_SLASH_5 } /* numericvalue=2/5 */, - { 1, 2805, 0, 18, 0, PL_HALFMARKS } /* combininghalfmarks */, - { 0, 3021, 0, 9, 0, PL_LATINEXTA } /* latinexta */, - { 2, 4314, 5163, 13, 14, PL_JG__HAMZAONHEHGOAL } /* joininggroup=tehmarbutagoal */, - { 2, 8096, 6439, 4, 11, PL_SYLO } /* scx=sylotinagri */, - { 0, 7136, 6586, 6, 10, PL_CJKSTROKES } /* block=cjkstrokes */, - { 1, 7834, 0, 4, 0, PL_PE } /* ispe */, - { 2, 184, 3965, 2, 13, PL_MATHOPERATORS } /* ismathoperators */, - { 1, 6613, 1567, 3, 5, PL_HANG } /* ishangul */, - { 2, 974, 2289, 24, 4, PL_CCC__L } /* canonicalcombiningclass=left */, - { 0, 184, 8380, 2, 4, PL_LINA } /* islina */, - { 4, 2369, 3194, 20, 7, PL_VO__R } /* verticalorientation=rotated */, - { 0, 21, 4855, 2, 14, PL_LATINEXTC } /* inlatinextendedc */, - { 2, 6890, 5149, 4, 14, PL_SUPPUNCTUATION } /* blk=suppunctuation */, - { 1, 8344, 6461, 3, 11, PL_JT__T } /* jt=transparent */, - { 0, 6890, 4089, 4, 15, PL_ARABICEXTA } /* blk=arabicextendeda */, - { 4, 6890, 690, 4, 30, PL_CUNEIFORMNUMBERS } /* blk=cuneiformnumbersandpunctuation */, - { 0, 5968, 6006, 3, 11, PL_INOLDHUNGARIAN } /* inoldhungarian */, - { 0, 7288, 8524, 7, 4, PL_SC__SHRD } /* script=shrd */, - { 3, 6917, 0, 9, 0, PL_QAAI } /* inherited */, - { 1, 7288, 5801, 7, 5, PL_KHMR } /* script=khmer */, - { 0, 4509, 0, 15, 0, PL_SARB } /* oldsoutharabian */, - { 4, 8456, 0, 4, 0, PL_OSGE } /* osge */, - { 3, 7840, 4616, 4, 6, PL_VEDICEXT } /* isvedicext */, - { 3, 7380, 7702, 4, 3, PL_CCC__133 } /* ccc=200 */, - { 0, 5544, 7714, 13, 1, PL_NV__3 } /* numericvalue=3 */, - { 0, 720, 0, 21, 0, PL_ENCLOSEDALPHANUM } /* enclosedalphanumerics */, - { 0, 186, 7768, 2, 6, -PL_CE } /* ce=false */, - { 1, 7136, 4869, 6, 14, PL_LATINEXTD } /* block=latinextendedd */, - { 3, 7459, 7128, 3, 4, PL_BASS } /* sc=bass */, - { 2, 8288, 3543, 3, 5, PL_DT__SML } /* dt=small */, - { 2, 7459, 7918, 3, 4, PL_SC__THAA } /* sc=thaa */, - { 0, 2229, 966, 16, 2, PL_NO } /* generalcategory=no */, - { 6, 8816, 7941, 3, 5, PL_NV__11_SLASH_12 } /* nv=11/12 */, - { 5, 8816, 5219, 3, 5, PL_NV__10000 } /* nv=10000 */, - { 8, 184, 34, 2, 3, PL_EXT } /* isext */, - { 8, 6263, 6816, 10, 10, PL_LB__WJ } /* linebreak=wordjoiner */, - { 4, 8376, 25, 3, 2, PL_LB__SY } /* lb=sy */, - { 1, 7380, 8933, 4, 2, PL_CCC__9 } /* ccc=vr */, - { 2, 184, 3021, 2, 18, PL_LATINEXTADDITIONAL } /* islatinextadditional */, - { 0, 2221, 4588, 3, 11, PL_LB__H2 } /* hst=lvsyllable */, - { 3, 8011, 599, 3, 2, PL_XPOSIXCNTRL } /* gc=cc */, - { 1, 974, 8655, 24, 2, PL_CCC__33 } /* canonicalcombiningclass=33 */, - { 1, 6616, 7768, 10, 6, -PL_DEP } /* deprecated=false */, - { 0, 1417, 4599, 9, 15, PL_LU } /* category=uppercaseletter */, - { 0, 2985, 7951, 18, 5, PL_IDST } /* idstrinaryoperator=true */, - { 1, 7459, 1981, 3, 8, PL_SC__CYRL } /* sc=cyrillic */, - { 2, 6120, 0, 6, 0, PL_DOMINO } /* domino */, - { 1, 1855, 3223, 21, 2, -PL_CWCM } /* changeswhencasemapped=n */, - { 12, 6890, 7312, 4, 8, PL_INTAGBANWA } /* blk=tagbanwa */, - { 3, 6706, 8756, 10, 3, PL_IN__6_DOT_3 } /* presentin=6.3 */, - { 1, 7459, 4104, 3, 5, PL_BAMU } /* sc=bamum */, - { 0, 5544, 8160, 13, 2, PL_NV__13 } /* numericvalue=13 */, - { 3, 1417, 6351, 9, 11, PL_NO } /* category=othernumber */, - { 16, 1426, 3914, 22, 5, PL_INSC__OTHER } /* indicsyllabiccategory=other */, - { 1, 5544, 8137, 13, 3, PL_NV__1_SLASH_2 } /* numericvalue=1/2 */, - { 2, 184, 5825, 2, 4, PL_MAHJ } /* ismahj */, - { 0, 2134, 3223, 3, 3, -PL_XPOSIXXDIGIT } /* hex=no */, - { 1, 3129, 8044, 17, 4, PL_PHLI } /* scriptextensions=phli */, - { 3, 8288, 436, 4, 2, PL_DT__ENC } /* dt=enc */, - { 4, 6472, 5777, 10, 12, PL_LB__HL } /* wordbreak=hebrewletter */, - { 1, 6210, 3323, 3, 16, PL_CYRILLICEXTA } /* incyrillicextendeda */, - { 0, 6483, 3581, 11, 2, PL_XIDC } /* xidcontinue=t */, - { 3, 7380, 8643, 7, 2, PL_CCC__22 } /* ccc=ccc22 */, - { 5, 5544, 8164, 13, 4, PL_NV__15_SLASH_2 } /* numericvalue=15/2 */, - { 1, 5284, 7951, 13, 5, PL_CI } /* caseignorable=true */, - { 0, 7380, 3262, 4, 9, PL_CCC__BL } /* ccc=belowleft */, - { 1, 6109, 17, 10, 1, PL_CO } /* category=co */, - { 2, 7380, 2769, 4, 13, PL_CCC__214 } /* ccc=attachedabove */, - { 0, 1503, 2896, 3, 17, PL_ETHIOPICSUP } /* inethiopicsupplement */, - { 0, 7459, 78, 3, 6, PL_SC__ARAB } /* sc=arabic */, - { 1, 7583, 0, 7, 0, PL_PHAG } /* phagspa */, - { 8, 8783, 3223, 3, 3, -PL_CWU } /* cwu=no */, - { 5, 8376, 6666, 3, 10, PL_LB__NS } /* lb=nonstarter */, - { 9, 6263, 4673, 10, 14, PL_LB__CR } /* linebreak=carriagereturn */, - { 14, 974, 8164, 27, 2, PL_CCC__15 } /* canonicalcombiningclass=ccc15 */, - { 0, 7312, 0, 4, 0, PL_TAGB } /* tagb */, - { 0, 7520, 0, 7, 0, PL_MARC } /* marchen */, - { 4, 6472, 7160, 10, 8, PL_WB__EBG } /* wordbreak=ebasegaz */, - { 1, 1402, 4256, 4, 13, PL_DIACRITICALSEXT } /* indiacriticalsext */, - { 1, 8101, 3223, 5, 2, -PL_STERM } /* sterm=n */, - { 2, 7288, 8440, 7, 4, PL_OGAM } /* script=ogam */, - { 0, 5645, 3039, 10, 18, PL_BC__LRI } /* bidiclass=lefttorightisolate */, - { 1, 8276, 3223, 4, 2, -PL_CWCM } /* cwcm=n */, - { 6, 8016, 5762, 4, 3, PL_LB__ZWJ } /* gcb=zwj */, - { 5, 7834, 47, 5, 1, PL_PERM } /* isperm */, - { 4, 7459, 5427, 3, 9, PL_SC__MLYM } /* sc=malayalam */, - { 0, 3509, 7768, 17, 6, -PL_PATWS } /* patternwhitespace=false */, - { 10, 7478, 3995, 3, 15, PL_SYRIACSUP } /* issyriacsupplement */, - { 8, 7136, 2044, 6, 14, PL_MEETEIMAYEKEXT } /* block=meeteimayekext */, - { 6, 5134, 132, 4, 2, PL_PALM } /* ispalm */, - { 0, 3526, 7768, 17, 6, -PL_RI } /* regionalindicator=false */, - { 0, 8340, 4359, 3, 15, PL_JG__MANICHAEANGIMEL } /* jg=manichaeangimel */, - { 10, 7288, 954, 7, 5, PL_SC__GREK } /* script=greek */, - { 7, 8408, 0, 4, 0, PL_MRO } /* mroo */, - { 5, 7288, 5777, 7, 6, PL_HEBR } /* script=hebrew */, - { 2, 7136, 920, 6, 27, PL_ALPHABETICPF } /* block=alphabeticpresentationforms */, - { 5, 7136, 1680, 6, 22, PL_INDICNUMBERFORMS } /* block=commonindicnumberforms */, - { 1, 8096, 7492, 4, 7, PL_KNDA } /* scx=kannada */, - { 2, 5645, 1, 11, 1, PL_BC__BN } /* bidiclass=bn */, - { 3, 6713, 7732, 3, 1, PL_IN__5 } /* in=5 */, - { 6, 184, 6626, 2, 10, PL_KHAR } /* iskharoshthi */, - { 0, 5375, 6053, 12, 12, PL_JT__R } /* joiningtype=rightjoining */, - { 2, 184, 4104, 2, 15, PL_BAMUMSUP } /* isbamumsupplement */, - { 0, 6483, 7768, 11, 2, -PL_XIDC } /* xidcontinue=f */, - { 0, 7152, 0, 4, 0, PL_DUPL } /* dupl */, - { 6, 7136, 8819, 6, 3, PL_OCR } /* block=ocr */, - { 0, 184, 7388, 3, 6, PL_CJKEXTA } /* iscjkexta */, - { 1, 2023, 7997, 21, 4, PL_LOE } /* logicalorderexception=yes */, - { 0, 7288, 6005, 7, 12, PL_HUNG } /* script=oldhungarian */, - { 0, 4449, 17, 15, 1, PL_COMPEX } /* nfcquickcheck=no */, - { 2, 4314, 6523, 13, 2, PL_JG__FE } /* joininggroup=fe */, - { 2, 7459, 8232, 3, 4, PL_AVST } /* sc=avst */, - { 0, 6890, 3290, 4, 4, PL_UCAS } /* blk=ucas */, - { 2, 6351, 0, 11, 0, PL_NO } /* othernumber */, - { 1, 6890, 3458, 4, 10, PL_INMANICHAEAN } /* blk=manichaean */, - { 1, 7380, 8901, 7, 2, PL_CCC__36 } /* ccc=ccc36 */, - { 8, 184, 4239, 2, 4, PL_DASH } /* isdash */, - { 1, 974, 8643, 24, 2, PL_CCC__22 } /* canonicalcombiningclass=22 */, - { 6, 2229, 5037, 16, 14, PL_SK } /* generalcategory=modifiersymbol */, - { 0, 6616, 7997, 10, 4, PL_DEP } /* deprecated=yes */, - { 8, 7136, 570, 6, 30, PL_CJKEXTC } /* block=cjkunifiedideographsextensionc */, - { 0, 3458, 0, 10, 0, PL_MANI } /* manichaean */, - { 2, 4314, 6384, 13, 11, PL_JG__ROHINGYAYEH } /* joininggroup=rohingyayeh */, - { 2, 8798, 7768, 3, 2, -PL_LOE } /* loe=f */, - { 1, 4314, 5479, 13, 13, PL_JG__MANICHAEANONE } /* joininggroup=manichaeanone */, - { 1, 8816, 8148, 3, 4, PL_NV__1_SLASH_40 } /* nv=1/40 */, - { 0, 7136, 5957, 6, 12, PL_INMENDEKIKAKUI } /* block=mendekikakui */, - { 0, 184, 8368, 2, 3, PL_LAO } /* islao */, - { 0, 8816, 8180, 3, 3, PL_NV__3_SLASH_8 } /* nv=3/8 */, - { 0, 5968, 3058, 3, 17, PL_ORNAMENTALDINGBATS } /* inornamentaldingbats */, - { 0, 974, 7708, 27, 2, PL_CCC__21 } /* canonicalcombiningclass=ccc21 */, - { 3, 7345, 7951, 7, 5, PL_IDS } /* idstart=true */, - { 6, 920, 0, 27, 0, PL_ALPHABETICPF } /* alphabeticpresentationforms */, - { 0, 6221, 115, 4, 33, PL_DIACRITICALSFORSYMBOLS } /* incombiningdiacriticalmarksforsymbols */, - { 0, 186, 7768, 2, 2, -PL_CE } /* ce=f */, - { 2, 1448, 0, 26, 0, PL_SUPSYMBOLSANDPICTOGRAPHS } /* insupsymbolsandpictographs */, - { 0, 1981, 0, 8, 0, PL_CYRL } /* cyrillic */, - { 0, 7689, 5032, 3, 2, PL_ANY } /* isany */, - { 0, 6890, 7104, 4, 8, PL_INARMENIAN } /* blk=armenian */, - { 3, 7136, 7200, 6, 8, PL_INGURMUKHI } /* block=gurmukhi */, - { 0, 4224, 0, 15, 0, PL_CURRENCYSYMBOLS } /* currencysymbols */, - { 2, 8340, 5518, 3, 13, PL_JG__MANICHAEANWAW } /* jg=manichaeanwaw */, - { 2, 8196, 5219, 4, 2, PL_AGE__10 } /* age=10 */, - { 9, 7288, 7858, 7, 4, PL_SC__KHOJ } /* script=khoj */, - { 0, 2229, 6796, 16, 10, PL_CN } /* generalcategory=unassigned */, - { 0, 6210, 511, 3, 29, PL_CJKEXTA } /* incjkunifiedideographsextensiona */, - { 16, 8011, 4329, 3, 15, PL_LL } /* gc=lowercaseletter */, - { 3, 8026, 5271, 5, 13, PL_INPC__BOTTOMANDLEFT } /* inpc=bottomandleft */, - { 0, 3129, 8520, 17, 4, PL_SHAW } /* scriptextensions=shaw */, - { 0, 8376, 8919, 3, 2, PL_LB__B2 } /* lb=b2 */, - { 0, 184, 7152, 2, 8, PL_DUPL } /* isduployan */, - { 0, 7380, 4976, 4, 2, PL_CCC__7 } /* ccc=nk */, - { 1, 6890, 0, 4, 34, PL_UCAS } /* blk=unifiedcanadianaboriginalsyllabics */, - { 0, 184, 2408, 2, 6, PL_BRAH } /* isbrahmi */, - { 0, 8288, 7541, 3, 7, PL_DT__NB } /* dt=nobreak */, - { 2, 6890, 5531, 4, 13, PL_MISCTECHNICAL } /* blk=misctechnical */, - { 0, 4554, 72, 14, 2, PL_SB__LE } /* sentencebreak=le */, - { 14, 3129, 8548, 17, 4, PL_TFNG } /* scriptextensions=tfng */, - { 1, 3129, 7780, 17, 4, PL_CARI } /* scriptextensions=cari */, - { 2, 8096, 8268, 4, 4, PL_CPRT } /* scx=cprt */, - { 2, 8798, 0, 3, 0, PL_LOE } /* loe */, - { 28, 1159, 3223, 25, 2, -PL_CWKCF } /* changeswhennfkccasefolded=n */, - { 0, 84, 3581, 4, 2, PL_MATH } /* math=t */, - { 1, 7226, 5315, 6, 5, PL_XPOSIXALNUM } /* xposixalnum */, - { 2, 58, 3223, 4, 2, -PL_IDEO } /* ideo=n */, - { 0, 1417, 1452, 9, 2, PL_PS } /* category=ps */, - { 6, 8026, 850, 3, 9, PL_PUA } /* inprivateuse */, - { 1, 5544, 8720, 13, 3, PL_NV__3_SLASH_5 } /* numericvalue=3/5 */, - { 2, 6706, 8855, 10, 3, PL_IN__3_DOT_2 } /* presentin=v32 */, - { 0, 5284, 3223, 13, 3, -PL_CI } /* caseignorable=no */, - { 7, 7478, 3568, 3, 3, PL_SGNW } /* issgnw */, - { 5, 184, 8436, 2, 4, PL_NSHU } /* isnshu */, - { 17, 184, 6980, 2, 9, PL_NBAT } /* isnabataean */, - { 0, 8096, 7846, 4, 6, PL_KTHI } /* scx=kaithi */, - { 2, 7459, 2636, 3, 9, PL_SC__MONG } /* sc=mongolian */, - { 0, 7380, 78, 4, 2, PL_CCC__AR } /* ccc=ar */, - { 4, 1426, 699, 22, 6, PL_INSC__NUMBER } /* indicsyllabiccategory=number */, - { 0, 8016, 3985, 4, 9, PL_LB__EM } /* gcb=emodifier */, - { 3, 7459, 8264, 3, 4, PL_CANS } /* sc=cans */, - { 1, 3129, 8424, 17, 4, PL_NBAT } /* scriptextensions=nbat */, - { 2, 6890, 5693, 4, 12, PL_CYRILLICEXTB } /* blk=cyrillicextb */, - { 1, 5765, 7768, 12, 6, -PL_GRBASE } /* graphemebase=false */, - { 2, 7136, 6505, 6, 11, PL_YISYLLABLES } /* block=yisyllables */, - { 8, 5544, 8180, 13, 4, PL_NV__3_SLASH_80 } /* numericvalue=3/80 */, - { 1, 7380, 8688, 4, 2, PL_CCC__26 } /* ccc=26 */, - { 0, 4542, 7585, 3, 3, PL_TAGS } /* istags */, - { 0, 8340, 3812, 3, 3, PL_JG__LAM } /* jg=lam */, - { 3, 2065, 3581, 21, 2, PL_NCHAR } /* noncharactercodepoint=t */, - { 0, 2229, 133, 16, 4, PL_M } /* generalcategory=mark */, - { 4, 6890, 1378, 4, 24, PL_HIGHPUSURROGATES } /* blk=highprivateusesurrogates */, - { 10, 2750, 0, 4, 0, PL_TERM } /* term */, - { 3, 7288, 2877, 7, 10, PL_SC__DEVA } /* script=devanagari */, - { 2, 6890, 4509, 4, 15, PL_SARB } /* blk=oldsoutharabian */, - { 4, 8204, 7768, 4, 6, -PL_POSIXXDIGIT } /* ahex=false */, - { 6, 7288, 8364, 7, 4, PL_LANA } /* script=lana */, - { 0, 8096, 7604, 4, 7, PL_SIDD } /* scx=siddham */, - { 0, 34, 7997, 3, 2, PL_EXT } /* ext=y */, - { 0, 7136, 361, 6, 21, PL_MATHOPERATORS } /* block=mathematicaloperators */, - { 9, 7478, 3963, 3, 15, PL_SUPMATHOPERATORS } /* issupmathoperators */, - { 0, 1876, 7768, 21, 2, -PL_CWL } /* changeswhenlowercased=f */, - { 1, 8816, 8903, 3, 2, PL_NV__38 } /* nv=38 */, - { 0, 96, 7951, 10, 5, PL_XPOSIXALPHA } /* alphabetic=true */, - { 1, 8777, 7768, 3, 2, -PL_CWL } /* cwl=f */, - { 1, 184, 2249, 2, 4, PL_GLAG } /* isglag */, - { 9, 7136, 8091, 6, 5, PL_INRUNIC } /* block=runic */, - { 0, 7816, 7768, 6, 6, -PL_GRBASE } /* grbase=false */, - { 3, 6890, 5388, 4, 13, PL_KANAEXTA } /* blk=kanaextendeda */, - { 3, 1876, 3581, 21, 2, PL_CWL } /* changeswhenlowercased=t */, - { 2, 1448, 468, 5, 11, PL_SUPPUNCTUATION } /* insuppunctuation */, - { 2, 974, 8228, 24, 4, PL_CCC__133 } /* canonicalcombiningclass=atbl */, - { 0, 7136, 7786, 6, 6, PL_INCHAKMA } /* block=chakma */, - { 2, 5645, 24, 10, 1, PL_BC__L } /* bidiclass=l */, - { 2, 184, 6219, 2, 11, PL_JOINC } /* isjoincontrol */, - { 0, 7288, 7034, 7, 9, PL_PALM } /* script=palmyrene */, - { 0, 8795, 67, 3, 4, PL_VSSUP } /* invssup */, - { 0, 8508, 8373, 4, 3, PL_SC__LATN } /* sc=latn */, - { 1, 6210, 1659, 3, 18, PL_CJKCOMPATIDEOGRAPHS } /* incjkcompatideographs */, - { 0, 1908, 0, 5, 0, PL_LT } /* title */, - { 0, 8816, 7744, 3, 3, PL_NV__700 } /* nv=700 */, - { 0, 8816, 7732, 3, 4, PL_NV__5000 } /* nv=5000 */, - { 1, 6713, 8843, 3, 3, PL_IN__2 } /* in=v20 */, - { 2, 4104, 0, 15, 0, PL_BAMUMSUP } /* bamumsupplement */, - { 1, 2065, 7768, 21, 2, -PL_NCHAR } /* noncharactercodepoint=f */, - { 2, 8096, 8304, 4, 4, PL_GUJR } /* scx=gujr */, - { 0, 184, 4419, 2, 15, PL_MISCPICTOGRAPHS } /* ismiscpictographs */, - { 3, 6263, 21, 10, 2, PL_LB__IN } /* linebreak=in */, - { 1, 184, 7152, 2, 4, PL_DUPL } /* isdupl */, - { 1, 8011, 5079, 3, 14, PL_MN } /* gc=nonspacingmark */, - { 2, 3516, 7768, 10, 2, -PL_XPOSIXSPACE } /* whitespace=f */, - { 1, 7136, 8208, 6, 4, PL_INAHOM } /* block=ahom */, - { 0, 1258, 0, 24, 0, PL_ARABICPFB } /* arabicpresentationformsb */, - { 9, 7227, 8081, 5, 5, PL_POSIXPRINT } /* posixprint */, - { 2, 4402, 3867, 3, 15, PL_MISCMATHSYMBOLSB } /* inmiscmathsymbolsb */, - { 1, 6890, 7256, 4, 8, PL_KANAEXTA } /* blk=kanaexta */, - { 6, 2023, 7997, 21, 2, PL_LOE } /* logicalorderexception=y */, - { 5, 3129, 7646, 17, 7, PL_TAVT } /* scriptextensions=taiviet */, - { 0, 8504, 18, 4, 1, PL_LB__CR } /* sb=cr */, - { 1, 974, 2769, 24, 18, PL_CCC__216 } /* canonicalcombiningclass=attachedaboveright */, - { 0, 7136, 6872, 6, 9, PL_ARABICPFB } /* block=arabicpfb */, - { 3, 1448, 6440, 3, 10, PL_INSYLOTINAGRI } /* insylotinagri */, - { 0, 7478, 2675, 3, 11, PL_SUNDANESESUP } /* issundanesesup */, - { 2, 7136, 4135, 7, 14, PL_BRAI } /* block=braillepatterns */, - { 0, 7136, 4614, 6, 15, PL_VEDICEXT } /* block=vedicextensions */, - { 0, 8096, 8280, 4, 4, PL_CYRL } /* scx=cyrl */, - { 10, 2985, 7997, 3, 4, PL_IDS } /* ids=yes */, - { 7, 117, 6, 3, 2, PL_INIDC } /* inidc */, - { 2, 8288, 7792, 3, 6, PL_DT__ENC } /* dt=circle */, - { 5, 1417, 1204, 9, 2, PL_PO } /* category=po */, - { 3, 7136, 7422, 6, 7, PL_CJKEXTF } /* block=cjkextf */, - { 4, 8816, 8169, 3, 3, PL_NV__7_SLASH_2 } /* nv=7/2 */, - { 3, 5645, 18, 10, 1, PL_BC__R } /* bidiclass=r */, - { 4, 7459, 5957, 3, 12, PL_MEND } /* sc=mendekikakui */, - { 11, 6890, 361, 4, 21, PL_MATHOPERATORS } /* blk=mathematicaloperators */, - { 1, 8096, 7367, 5, 6, PL_BENG } /* scx=bengali */, - { 0, 184, 511, 3, 19, PL_CJK } /* iscjkunifiedideographs */, - { 0, 3129, 8236, 17, 4, PL_BATK } /* scriptextensions=batk */, - { 1, 1834, 7768, 21, 6, -PL_CWCF } /* changeswhencasefolded=false */, - { 3, 6484, 7768, 10, 2, -PL_IDC } /* idcontinue=f */, - { 0, 7288, 7145, 8, 3, PL_SC__BUGI } /* script=bugi */, - { 1, 6263, 125, 10, 2, PL_LB__CR } /* linebreak=cr */, - { 0, 6890, 3237, 4, 17, PL_ALCHEMICAL } /* blk=alchemicalsymbols */, - { 3, 184, 8488, 2, 4, PL_RJNG } /* isrjng */, - { 7, 184, 7436, 2, 4, PL_ELBA } /* iselba */, - { 0, 18, 7768, 2, 2, -PL_RI } /* ri=f */, - { 1, 3424, 7997, 17, 2, PL_IDSB } /* idsbinaryoperator=y */, - { 2, 7459, 8488, 3, 4, PL_RJNG } /* sc=rjng */, - { 0, 2065, 7951, 21, 5, PL_NCHAR } /* noncharactercodepoint=true */, - { 2, 8376, 42, 3, 2, PL_LB__CJ } /* lb=cj */, - { 10, 1358, 7951, 20, 5, PL_CE } /* compositionexclusion=true */, - { 6, 7380, 6142, 4, 11, PL_CCC__DB } /* ccc=doublebelow */, - { 1, 4869, 0, 14, 0, PL_LATINEXTD } /* latinextendedd */, - { 0, 184, 720, 2, 21, PL_ENCLOSEDALPHANUM } /* isenclosedalphanumerics */, - { 0, 2484, 0, 19, 0, PL_EGYP } /* egyptianhieroglyphs */, - { 2, 8240, 8807, 3, 3, PL_BC__LRO } /* bc=lro */, - { 1, 8016, 1133, 4, 7, PL_GCB__PP } /* gcb=prepend */, - { 0, 8572, 497, 4, 6, PL_WB__NU } /* wb=numeric */, - { 16, 7380, 8678, 4, 3, PL_CCC__B } /* ccc=220 */, - { 0, 7478, 7062, 3, 8, PL_SAMR } /* issamaritan */, - { 1, 8096, 2841, 4, 4, PL_COPT } /* scx=copt */, - { 11, 6863, 0, 9, 0, PL_ARABICPFA } /* arabicpfa */, - { 1, 3946, 3223, 16, 3, -PL_STERM } /* sentenceterminal=no */, - { 6, 6890, 2271, 6, 18, PL_ININSCRIPTIONALPAHLAVI } /* blk=inscriptionalpahlavi */, - { 2, 1918, 3581, 21, 2, PL_CWU } /* changeswhenuppercased=t */, - { 1, 3129, 57, 17, 2, PL_YI } /* scriptextensions=yi */, - { 2, 7380, 8617, 4, 2, PL_CCC__31 } /* ccc=31 */, - { 13, 8816, 8188, 3, 4, PL_NV__7_SLASH_12 } /* nv=7/12 */, - { 5, 7994, 0, 7, 0, PL_IDC } /* idc=yes */, - { 1, 7136, 8111, 6, 5, PL_INTAKRI } /* block=takri */, - { 1, 8096, 7870, 4, 4, PL_LEPC } /* scx=lepc */, - { 5, 184, 1028, 3, 5, PL_COPT } /* iscoptic */, - { 21, 184, 8400, 2, 4, PL_MIAO } /* ismiao */, - { 0, 6890, 6428, 4, 11, PL_SUPERANDSUB } /* blk=superandsub */, - { 0, 8011, 468, 3, 5, PL_P } /* gc=punct */, - { 19, 184, 631, 3, 29, PL_CJKEXTE } /* iscjkunifiedideographsextensione */, - { 0, 7136, 2877, 6, 18, PL_DEVANAGARIEXT } /* block=devanagariextended */, - { 0, 7834, 3521, 6, 5, PL_POSIXSPACE } /* isperlspace */, - { 1, 8011, 47, 3, 1, PL_M } /* gc=m */, - { 0, 1133, 7768, 26, 2, -PL_PCM } /* prependedconcatenationmark=f */, - { 2, 5657, 0, 12, 0, PL_BIDIM } /* bidimirrored */, - { 2, 2985, 7951, 4, 5, PL_IDST } /* idst=true */, - { 0, 8288, 7184, 3, 3, PL_DT__FRA } /* dt=fra */, - { 1, 184, 8600, 2, 4, PL_QAAI } /* iszinh */, - { 3, 4402, 2618, 3, 18, PL_MODIFIERTONELETTERS } /* inmodifiertoneletters */, - { 0, 2369, 472, 20, 2, PL_VO__TU } /* verticalorientation=tu */, - { 0, 6890, 2693, 4, 19, PL_SUPARROWSA } /* blk=supplementalarrowsa */, - { 4, 7136, 7336, 6, 8, PL_INUGARITIC } /* block=ugaritic */, - { 0, 7380, 8702, 4, 3, PL_CCC__DA } /* ccc=234 */, - { 10, 11, 7951, 3, 5, PL_DIA } /* dia=true */, - { 1, 8816, 7714, 3, 4, PL_NV__3000 } /* nv=3000 */, - { 0, 4314, 5921, 13, 12, PL_JG__MANICHAEANPE } /* joininggroup=manichaeanpe */, - { 0, 7136, 3754, 6, 16, PL_LINEARBIDEOGRAMS } /* block=linearbideograms */, - { 1, 8340, 8512, 3, 4, PL_JG__SEEN } /* jg=seen */, - { 6, 4402, 6647, 3, 9, PL_MISCARROWS } /* inmiscarrows */, - { 1, 8196, 8750, 4, 3, PL_AGE__6_DOT_1 } /* age=6.1 */, - { 1, 7994, 36, 4, 1, PL_IDC } /* idc=t */, - { 0, 5149, 0, 14, 0, PL_SUPPUNCTUATION } /* suppunctuation */, - { 0, 7288, 3458, 7, 4, PL_SC__MANI } /* script=mani */, - { 5, 802, 0, 6, 0, PL_ARROWS } /* arrows */, - { 0, 2229, 8009, 16, 2, PL_CF } /* generalcategory=cf */, - { 0, 5544, 7702, 13, 3, PL_NV__200 } /* numericvalue=200 */, - { 0, 7288, 8396, 7, 4, PL_MERC } /* script=merc */, - { 0, 76, 7096, 2, 8, PL_NT__NU } /* nt=numeric */, - { 1, 21, 5233, 3, 12, PL_AEGEANNUMBERS } /* inaegeannumbers */, - { 0, 6890, 7852, 4, 6, PL_KANBUN } /* blk=kanbun */, - { 3, 5544, 7738, 13, 5, PL_NV__60000 } /* numericvalue=60000 */, - { 0, 6210, 1982, 3, 10, PL_CYRILLICSUP } /* incyrillicsup */, - { 2, 4314, 6072, 13, 4, PL_JG__NOON } /* joininggroup=noon */, - { 3, 6890, 7248, 4, 8, PL_INJAVANESE } /* blk=javanese */, - { 1, 7288, 690, 7, 9, PL_XSUX } /* script=cuneiform */, - { 2, 8121, 7951, 5, 5, PL_UIDEO } /* uideo=true */, - { 0, 1887, 7768, 9, 6, -PL_XPOSIXLOWER } /* lowercase=false */, - { 0, 7459, 7152, 3, 4, PL_SC__DUPL } /* sc=dupl */, - { 0, 6890, 8106, 4, 5, PL_INTAILE } /* blk=taile */, - { 2, 21, 7240, 2, 8, PL_JAMOEXTB } /* injamoextb */, - { 4, 5717, 0, 12, 0, PL_ETHIOPICEXTA } /* ethiopicexta */, - { 0, 8822, 7997, 3, 4, PL_PCM } /* pcm=yes */, - { 13, 7459, 8596, 3, 4, PL_ZANB } /* sc=zanb */, - { 0, 974, 8672, 24, 3, PL_CCC__214 } /* canonicalcombiningclass=214 */, - { 0, 7136, 7499, 6, 7, PL_KALI } /* block=kayahli */, - { 2, 8822, 3223, 3, 3, -PL_PCM } /* pcm=no */, - { 1, 7459, 7320, 3, 8, PL_TFNG } /* sc=tifinagh */, - { 1, 5544, 7720, 13, 3, PL_NV__400 } /* numericvalue=400 */, - { 0, 2229, 295, 16, 2, PL_SM } /* generalcategory=sm */, - { 19, 5134, 8469, 3, 3, PL_MIAO } /* isplrd */, - { 1, 7994, 3, 4, 1, -PL_IDC } /* idc=f */, - { 5, 184, 2967, 2, 11, PL_GEORGIANSUP } /* isgeorgiansup */, - { 0, 7344, 0, 8, 0, PL_XIDS } /* xidstart */, - { 2, 8096, 8552, 4, 4, PL_TGLG } /* scx=tglg */, - { 5, 3521, 3581, 5, 2, PL_XPOSIXSPACE } /* space=t */, - { 6, 1206, 7913, 3, 5, PL_INTELUGU } /* intelugu */, - { 6, 8816, 7708, 3, 2, PL_NV__21 } /* nv=21 */, - { 0, 7136, 447, 6, 18, PL_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbols */, - { 5, 7478, 7626, 3, 6, PL_SUPPUAB } /* issuppuab */, - { 0, 4630, 4600, 3, 14, PL_LU } /* isuppercaseletter */, - { 0, 2985, 7768, 3, 2, -PL_IDS } /* ids=f */, - { 1, 4464, 7998, 14, 3, PL_NFDQC__Y } /* nfdquickcheck=yes */, - { 8, 7288, 3288, 7, 17, PL_AGHB } /* script=caucasianalbanian */, - { 3, 8786, 66, 3, 1, PL_EA__H } /* ea=h */, - { 0, 4314, 4981, 13, 14, PL_JG__MANICHAEANQOPH } /* joininggroup=manichaeanqoph */, - { 9, 8356, 0, 4, 0, PL_KNDA } /* knda */, - { 1, 3129, 8312, 17, 4, PL_HAN } /* scriptextensions=hani */, - { 2, 5134, 6375, 4, 9, PL_HMNG } /* ispahawhhmong */, - { 1, 7288, 5957, 7, 12, PL_MEND } /* script=mendekikakui */, - { 19, 7136, 6536, 6, 10, PL_ARABICEXTA } /* block=arabicexta */, - { 4, 7136, 1589, 6, 23, PL_LATINEXTADDITIONAL } /* block=latinextendedadditional */, - { 4, 6890, 5825, 4, 7, PL_MAHJONG } /* blk=mahjong */, - { 16, 1346, 957, 5, 2, PL_INGREEK } /* ingreek */, - { 0, 184, 1691, 2, 11, PL_NUMBERFORMS } /* isnumberforms */, - { 2, 6483, 7768, 11, 6, -PL_XIDC } /* xidcontinue=false */, - { 3, 1929, 7997, 5, 4, PL_XPOSIXUPPER } /* upper=yes */, - { 3, 7136, 2674, 6, 12, PL_SUNDANESESUP } /* block=sundanesesup */, - { 6, 8096, 6626, 4, 10, PL_KHAR } /* scx=kharoshthi */, - { 4, 21, 1691, 2, 11, PL_NUMBERFORMS } /* innumberforms */, - { 0, 1417, 112, 9, 2, PL_SC } /* category=sc */, - { 5, 1887, 7768, 9, 2, -PL_XPOSIXLOWER } /* lowercase=f */, - { 1, 3129, 3610, 17, 8, PL_BOPO } /* scriptextensions=bopomofo */, - { 10, 5813, 0, 12, 0, PL_NL } /* letternumber */, - { 10, 974, 8897, 27, 2, PL_CCC__19 } /* canonicalcombiningclass=ccc19 */, - { 2, 6713, 8873, 3, 3, PL_IN__6 } /* in=v60 */, - { 6, 6890, 600, 4, 30, PL_CJKEXTD } /* blk=cjkunifiedideographsextensiond */, - { 10, 113, 0, 35, 0, PL_DIACRITICALSFORSYMBOLS } /* combiningdiacriticalmarksforsymbols */, - { 12, 8344, 6208, 3, 11, PL_JT__C } /* jt=joincausing */, - { 2, 7136, 5801, 6, 12, PL_KHMERSYMBOLS } /* block=khmersymbols */, - { 8, 6890, 6120, 4, 6, PL_DOMINO } /* blk=domino */, - { 12, 6706, 7750, 10, 1, PL_IN__8 } /* presentin=8 */, - { 2, 184, 4225, 3, 14, PL_CURRENCYSYMBOLS } /* iscurrencysymbols */, - { 1, 7136, 1812, 6, 15, PL_TRANSPORTANDMAP } /* block=transportandmap */, - { 8, 6890, 2249, 4, 20, PL_GLAGOLITICSUP } /* blk=glagoliticsupplement */, - { 4, 74, 0, 2, 0, PL_ME } /* me */, - { 3, 6263, 373, 10, 2, PL_LB__OP } /* linebreak=op */, - { 1, 949, 3223, 2, 3, -PL_CI } /* ci=no */, - { 0, 5245, 0, 5, 0, PL_ASCII } /* ascii */, - { 0, 600, 0, 30, 0, PL_CJKEXTD } /* cjkunifiedideographsextensiond */, - { 0, 4554, 18, 15, 1, PL_LB__CR } /* sentencebreak=cr */, - { 0, 8786, 3, 3, 1, PL_EA__F } /* ea=f */, - { 2, 7136, 690, 6, 9, PL_INCUNEIFORM } /* block=cuneiform */, - { 2, 184, 3526, 2, 17, PL_RI } /* isregionalindicator */, - { 1, 7912, 0, 6, 0, PL_TELU } /* telugu */, - { 1, 3129, 2841, 17, 6, PL_COPT } /* scriptextensions=coptic */, - { 1, 8816, 8615, 3, 3, PL_NV__1_SLASH_3 } /* nv=1/3 */, - { 4, 3114, 7337, 3, 7, PL_INUGARITIC } /* inugaritic */, - { 0, 6318, 0, 11, 0, PL_MYANMAREXTB } /* myanmarextb */, - { 7, 974, 8633, 27, 3, PL_CCC__103 } /* canonicalcombiningclass=ccc103 */, - { 9, 7459, 8106, 3, 5, PL_SC__TALE } /* sc=taile */, - { 0, 7459, 8496, 3, 4, PL_SAMR } /* sc=samr */, - { 4, 6536, 0, 10, 0, PL_ARABICEXTA } /* arabicexta */, - { 0, 7136, 1981, 6, 18, PL_CYRILLICSUP } /* block=cyrillicsupplement */, - { 3, 2990, 4091, 4, 13, PL_ARABICEXTA } /* inarabicextendeda */, - { 0, 8011, 1306, 3, 13, PL_M } /* gc=combiningmark */, - { 20, 184, 6991, 3, 2, PL_CWT } /* iscwt */, - { 1, 7380, 6230, 4, 11, PL_CCC__8 } /* ccc=kanavoicing */, - { 6, 7288, 8568, 7, 3, PL_VAI } /* script=vai */, - { 2, 5544, 8160, 13, 4, PL_NV__13_SLASH_2 } /* numericvalue=13/2 */, - { 2, 8376, 7828, 3, 6, PL_LB__HY } /* lb=hyphen */, - { 3, 8096, 8428, 4, 4, PL_NEWA } /* scx=newa */, - { 3, 7459, 2531, 3, 4, PL_SC__MULT } /* sc=mult */, - { 2, 974, 5595, 24, 2, PL_CCC__8 } /* canonicalcombiningclass=kv */, - { 2, 184, 5531, 2, 13, PL_MISCTECHNICAL } /* ismisctechnical */, - { 0, 3509, 3223, 17, 3, -PL_PATWS } /* patternwhitespace=no */, - { 9, 8096, 2360, 4, 4, PL_MAND } /* scx=mand */, - { 3, 2877, 0, 4, 0, PL_DEVA } /* deva */, - { 0, 184, 5957, 2, 4, PL_MEND } /* ismend */, - { 6, 8508, 21, 4, 3, PL_SC__LINA } /* sc=lina */, - { 0, 5657, 7768, 5, 2, -PL_BIDIM } /* bidim=f */, - { 2, 974, 8703, 24, 2, PL_CCC__34 } /* canonicalcombiningclass=34 */, - { 1, 7136, 349, 6, 33, PL_SUPMATHOPERATORS } /* block=supplementalmathematicaloperators */, - { 0, 8096, 7639, 4, 7, PL_LANA } /* scx=taitham */, - { 3, 6890, 5777, 4, 6, PL_INHEBREW } /* blk=hebrew */, - { 1, 6890, 3610, 4, 11, PL_BOPOMOFOEXT } /* blk=bopomofoext */, - { 1, 7422, 0, 7, 0, PL_CJKEXTF } /* cjkextf */, - { 0, 7344, 7768, 8, 6, -PL_XIDS } /* xidstart=false */, - { 0, 1206, 3148, 3, 17, PL_TAIXUANJING } /* intaixuanjingsymbols */, - { 2, 2221, 3223, 3, 14, PL_HST__NA } /* hst=notapplicable */, - { 3, 8011, 5813, 3, 12, PL_NL } /* gc=letternumber */, - { 1, 6890, 4134, 4, 15, PL_BRAI } /* blk=braillepatterns */, - { 0, 8096, 1160, 4, 4, PL_HANG } /* scx=hang */, - { 1, 1746, 3526, 21, 17, PL_RI } /* graphemeclusterbreak=regionalindicator */, - { 5, 7288, 7104, 7, 8, PL_SC__ARMN } /* script=armenian */, - { 7, 7136, 720, 6, 16, PL_ENCLOSEDALPHANUM } /* block=enclosedalphanum */, - { 7, 7380, 3254, 4, 17, PL_CCC__133 } /* ccc=attachedbelowleft */, - { 1, 3129, 3674, 17, 7, PL_CPRT } /* scriptextensions=cypriot */, - { 0, 184, 4855, 2, 14, PL_LATINEXTC } /* islatinextendedc */, - { 0, 217, 436, 6, 5, PL_NCHAR } /* _perl_nchar */, - { 1, 4314, 5453, 13, 13, PL_JG__MANICHAEANMEM } /* joininggroup=manichaeanmem */, - { 2, 7689, 3238, 3, 9, PL_ALCHEMICAL } /* isalchemical */, - { 0, 184, 1835, 3, 20, PL_CWCF } /* ischangeswhencasefolded */, - { 0, 7906, 1108, 4, 7, PL_SC__KANA } /* sc=katakana */, - { 0, 7136, 5362, 6, 13, PL_IPAEXT } /* block=ipaextensions */, - { 0, 6263, 8919, 10, 2, PL_LB__B2 } /* linebreak=b2 */, - { 3, 8096, 8237, 5, 3, PL_BATK } /* scx=batk */, - { 0, 2065, 0, 21, 0, PL_NCHAR } /* noncharactercodepoint */, - { 12, 2100, 7027, 4, 7, PL_ORKH } /* isoldturkic */, - { 0, 7689, 15, 4, 2, PL_ARAB } /* isarab */, - { 4, 7136, 7632, 6, 7, PL_INTAGALOG } /* block=tagalog */, - { 3, 2229, 5323, 16, 13, PL_ME } /* generalcategory=enclosingmark */, - { 0, 7478, 6375, 3, 3, PL_SHAW } /* isshaw */, - { 1, 4314, 6274, 13, 11, PL_JG__MALAYALAMJA } /* joininggroup=malayalamja */, - { 2, 7136, 3850, 6, 16, PL_MISCMATHSYMBOLSA } /* block=miscmathsymbolsa */, - { 2, 8783, 3223, 3, 2, -PL_CWU } /* cwu=n */, - { 5, 974, 7576, 24, 7, PL_CCC__1 } /* canonicalcombiningclass=overlay */, - { 1, 184, 1, 3, 1, PL_CN } /* iscn */, - { 0, 7457, 3626, 5, 16, PL_INSC__CANTILLATIONMARK } /* insc=cantillationmark */, - { 0, 8096, 7569, 4, 4, PL_OSMA } /* scx=osma */, - { 5, 7136, 4827, 6, 14, PL_KANGXI } /* block=kangxiradicals */, - { 1, 7288, 6736, 7, 4, PL_SAUR } /* script=saur */, - { 2, 7136, 947, 6, 27, PL_ANCIENTGREEKMUSIC } /* block=ancientgreekmusicalnotation */, - { 0, 7288, 7810, 7, 4, PL_GOTH } /* script=goth */, - { 4, 8096, 2409, 5, 3, PL_BRAH } /* scx=brah */, - { 1, 4479, 7996, 5, 3, PL_NFKCQC__Y } /* nfkcqc=y */, - { 0, 6890, 3441, 4, 17, PL_LETTERLIKESYMBOLS } /* blk=letterlikesymbols */, - { 11, 7136, 1306, 6, 24, PL_DIACRITICALSFORSYMBOLS } /* block=combiningmarksforsymbols */, - { 5, 949, 7951, 2, 5, PL_CI } /* ci=true */, - { 0, 468, 0, 5, 0, PL_P } /* punct */, - { 0, 2229, 2521, 16, 2, PL_PF } /* generalcategory=pf */, - { 0, 184, 7520, 2, 4, PL_MARC } /* ismarc */, - { 0, 5544, 8169, 13, 3, PL_NV__7_SLASH_2 } /* numericvalue=7/2 */, - { 1, 1746, 1083, 21, 2, PL_LB__LF } /* graphemeclusterbreak=lf */, - { 1, 184, 43, 3, 8, PL_CJKCOMPAT } /* iscjkcompat */, - { 3, 5134, 3, 3, 1, PL_PF } /* ispf */, - { 4, 1474, 4524, 22, 4, PL_BPT__O } /* bidipairedbrackettype=open */, - { 0, 8026, 473, 3, 2, PL_PUA } /* inpua */, - { 3, 5657, 3581, 5, 2, PL_BIDIM } /* bidim=t */, - { 1, 4063, 2879, 4, 8, PL_INDEVANAGARI } /* indevanagari */, - { 0, 6109, 6100, 11, 9, PL_L_AMP_ } /* category=casedletter */, - { 0, 3373, 806, 15, 1, PL_EA__W } /* eastasianwidth=w */, - { 5, 8344, 6, 3, 1, PL_JT__D } /* jt=d */, - { 3, 1206, 7585, 3, 3, PL_TAGS } /* intags */, - { 10, 7136, 4855, 6, 14, PL_LATINEXTC } /* block=latinextendedc */, - { 42, 8096, 7336, 4, 4, PL_UGAR } /* scx=ugar */, - { 3, 4314, 8212, 13, 4, PL_JG__ALEF } /* joininggroup=alef */, - { 0, 5544, 7702, 13, 1, PL_NV__2 } /* numericvalue=2 */, - { 0, 7478, 3085, 3, 8, PL_Z } /* isseparator */, - { 5, 6890, 4209, 4, 15, PL_CONTROLPICTURES } /* blk=controlpictures */, - { 14, 1797, 0, 15, 0, PL_MODIFIERLETTERS } /* modifierletters */, - { 0, 21, 6826, 2, 10, PL_YIRADICALS } /* inyiradicals */, - { 6, 8096, 7876, 4, 4, PL_LYCI } /* scx=lyci */, - { 2, 6890, 7918, 4, 6, PL_INTHAANA } /* blk=thaana */, - { 17, 8376, 58, 3, 2, PL_LB__ID } /* lb=id */, - { 1, 8096, 8308, 4, 4, PL_GURU } /* scx=guru */, - { 0, 7136, 7104, 6, 8, PL_INARMENIAN } /* block=armenian */, - { 0, 2859, 974, 18, 9, PL_DT__CAN } /* decompositiontype=canonical */, - { 0, 8272, 7768, 4, 6, -PL_CWCF } /* cwcf=false */, - { 1, 183, 0, 20, 0, PL_MISCSYMBOLS } /* miscellaneoussymbols */, - { 0, 8340, 8041, 3, 5, PL_JG__KHAPH } /* jg=khaph */, - { 0, 6706, 8852, 10, 3, PL_IN__3_DOT_1 } /* presentin=v31 */, - { 1, 1402, 9, 24, 2, PL_INPC__NA } /* indicpositionalcategory=na */, - { 4, 2236, 47, 10, 1, PL_LM } /* category=lm */, - { 0, 1417, 1621, 9, 6, PL_CF } /* category=format */, - { 2, 1503, 6910, 4, 7, PL_EMOTICONS } /* inemoticons */, - { 0, 6076, 7768, 11, 6, -PL_BIDIC } /* bidicontrol=false */, - { 0, 8568, 0, 3, 0, PL_VAI } /* vai */, - { 0, 7457, 7924, 5, 6, PL_INSC__VIRAMA } /* insc=virama */, - { 0, 8504, 49, 3, 2, PL_SB__AT } /* sb=at */, - { 0, 8011, 1679, 3, 2, PL_PC } /* gc=pc */, - { 2, 7459, 2484, 3, 19, PL_EGYP } /* sc=egyptianhieroglyphs */, - { 0, 7288, 3611, 8, 7, PL_SC__BOPO } /* script=bopomofo */, - { 1, 7288, 57, 7, 2, PL_SC__YI } /* script=yi */, - { 12, 6890, 5609, 4, 12, PL_ALPHABETICPF } /* blk=alphabeticpf */, - { 4, 7459, 8600, 3, 4, PL_SC__QAAI } /* sc=zinh */, - { 2, 4314, 8592, 13, 4, PL_JG__ZAIN } /* joininggroup=zain */, - { 2, 8816, 7702, 3, 3, PL_NV__200 } /* nv=200 */, - { 0, 5192, 448, 3, 17, PL_IDEOGRAPHICSYMBOLS } /* isideographicsymbols */, - { 3, 8011, 44, 4, 1, PL_SK } /* gc=sk */, - { 3, 5544, 5219, 13, 2, PL_NV__10 } /* numericvalue=10 */, - { 4, 84, 7951, 4, 5, PL_MATH } /* math=true */, - { 2, 6706, 8753, 10, 3, PL_IN__6_DOT_2 } /* presentin=6.2 */, - { 0, 5544, 8909, 13, 2, PL_NV__45 } /* numericvalue=45 */, - { 1, 8026, 6697, 3, 9, PL_INPHOENICIAN } /* inphoenician */, - { 7, 8344, 6253, 4, 10, PL_JT__L } /* jt=leftjoining */, - { 3, 3129, 8500, 17, 4, PL_SARB } /* scriptextensions=sarb */, - { 2, 6890, 8556, 4, 4, PL_INTHAI } /* blk=thai */, - { 4, 21, 4813, 2, 7, PL_KANASUP } /* inkanasup */, - { 0, 6713, 7750, 3, 1, PL_IN__8 } /* in=8 */, - { 10, 7380, 8740, 7, 2, PL_CCC__25 } /* ccc=ccc25 */, - { 1, 184, 720, 2, 16, PL_ENCLOSEDALPHANUM } /* isenclosedalphanum */, - { 6, 7288, 8456, 7, 4, PL_OSGE } /* script=osge */, - { 0, 7288, 8044, 7, 4, PL_PHLI } /* script=phli */, - { 1, 7459, 6980, 3, 9, PL_NBAT } /* sc=nabataean */, - { 2, 7380, 7941, 4, 2, PL_CCC__11 } /* ccc=11 */, - { 0, 7906, 7493, 4, 6, PL_SC__KNDA } /* sc=kannada */, - { 0, 4542, 7313, 3, 7, PL_TAGB } /* istagbanwa */, - { 9, 6406, 0, 11, 0, PL_SORA } /* sorasompeng */, - { 4, 2229, 4524, 16, 15, PL_PS } /* generalcategory=openpunctuation */, - { 1, 974, 8673, 27, 2, PL_CCC__14 } /* canonicalcombiningclass=ccc14 */, - { 1, 8016, 1627, 4, 7, PL_GCB__CN } /* gcb=control */, - { 6, 4314, 5909, 13, 12, PL_JG__MALAYALAMTTA } /* joininggroup=malayalamtta */, - { 8, 6890, 8819, 4, 3, PL_OCR } /* blk=ocr */, - { 2, 184, 4644, 2, 15, PL_ZANB } /* iszanabazarsquare */, - { 0, 5375, 6252, 12, 11, PL_JT__L } /* joiningtype=leftjoining */, - { 0, 8096, 8496, 4, 4, PL_SAMR } /* scx=samr */, - { 0, 2249, 0, 10, 0, PL_GLAG } /* glagolitic */, - { 2, 7288, 7359, 7, 7, PL_AVST } /* script=avestan */, - { 7, 8096, 6989, 4, 9, PL_TALU } /* scx=newtailue */, - { 0, 8376, 4701, 3, 14, PL_LB__SA } /* lb=complexcontext */, - { 10, 5093, 0, 14, 0, PL_PHONETICEXTSUP } /* phoneticextsup */, - { 0, 184, 1307, 3, 12, PL_M } /* iscombiningmark */, - { 2, 5192, 1687, 3, 15, PL_INDICNUMBERFORMS } /* isindicnumberforms */, - { 0, 6890, 7597, 4, 7, PL_SHAW } /* blk=shavian */, - { 4, 184, 7527, 2, 7, PL_MULT } /* ismultani */, - { 13, 436, 7997, 5, 2, PL_NCHAR } /* nchar=y */, - { 2, 8011, 1627, 3, 7, PL_XPOSIXCNTRL } /* gc=control */, - { 2, 3129, 7900, 17, 6, PL_RJNG } /* scriptextensions=rejang */, - { 0, 6890, 3543, 4, 17, PL_SMALLFORMS } /* blk=smallformvariants */, - { 1, 8340, 6523, 3, 2, PL_JG__FE } /* jg=fe */, - { 3, 8240, 36, 4, 1, PL_BC__ET } /* bc=et */, - { 0, 8220, 0, 4, 0, PL_ARMN } /* armn */, - { 0, 6890, 7208, 4, 8, PL_INHIRAGANA } /* blk=hiragana */, - { 1, 7136, 1506, 6, 14, PL_MUSIC } /* block=musicalsymbols */, - { 1, 8504, 138, 3, 2, PL_SB__FO } /* sb=fo */, - { 0, 7136, 1981, 6, 21, PL_CYRILLICSUP } /* block=cyrillicsupplementary */, - { 2, 8500, 0, 4, 0, PL_SARB } /* sarb */, - { 0, 8288, 7184, 3, 8, PL_DT__FRA } /* dt=fraction */, - { 8, 4449, 7996, 4, 3, PL_NFCQC__Y } /* nfcqc=y */, - { 2, 6890, 2149, 4, 20, PL_INANATOLIANHIEROGLYPHS } /* blk=anatolianhieroglyphs */, - { 2, 6554, 7368, 4, 5, PL_INBENGALI } /* inbengali */, - { 0, 7288, 8308, 7, 4, PL_SC__GURU } /* script=guru */, - { 6, 8288, 45, 3, 3, PL_DT__COM } /* dt=com */, - { 8, 7288, 2967, 7, 4, PL_SC__GEOR } /* script=geor */, - { 0, 974, 7756, 24, 1, PL_CCC__9 } /* canonicalcombiningclass=9 */, - { 0, 184, 1702, 2, 22, PL_DIACRITICALSFORSYMBOLS } /* isdiacriticalsforsymbols */, - { 9, 21, 4827, 2, 14, PL_KANGXI } /* inkangxiradicals */, - { 0, 6890, 7359, 4, 7, PL_INAVESTAN } /* blk=avestan */, - { 1, 1417, 5310, 9, 13, PL_XPOSIXDIGIT } /* category=decimalnumber */, - { 0, 3129, 8496, 17, 4, PL_SAMR } /* scriptextensions=samr */, - { 3, 7798, 7951, 6, 5, PL_COMPEX } /* compex=true */, - { 8, 974, 7708, 24, 2, PL_CCC__21 } /* canonicalcombiningclass=21 */, - { 0, 7840, 5600, 6, 9, PL_VERTICALFORMS } /* isverticalforms */, - { 0, 1027, 0, 2, 0, PL_SO } /* so */, - { 1, 7168, 3223, 8, 2, -PL_EXT } /* extender=n */, - { 0, 7227, 5315, 5, 5, PL_POSIXALNUM } /* posixalnum */, - { 2, 7136, 7450, 6, 7, PL_INHANUNOO } /* block=hanunoo */, - { 1, 7136, 540, 6, 30, PL_CJKEXTB } /* block=cjkunifiedideographsextensionb */, - { 3, 6506, 6506, 3, 10, PL_YISYLLABLES } /* isyisyllables */, - { 11, 8096, 7450, 4, 7, PL_HANO } /* scx=hanunoo */, - { 1, 7288, 7597, 7, 7, PL_SHAW } /* script=shavian */, - { 6, 7136, 7590, 6, 7, PL_INSHARADA } /* block=sharada */, - { 0, 974, 1484, 24, 2, PL_CCC__BR } /* canonicalcombiningclass=br */, - { 0, 7459, 8244, 3, 4, PL_BHKS } /* sc=bhks */, - { 1, 8504, 3084, 3, 3, PL_SB__SE } /* sb=sep */, - { 4, 184, 8021, 2, 5, PL_GREXT } /* isgrext */, - { 14, 3526, 3581, 17, 2, PL_RI } /* regionalindicator=t */, - { 1, 974, 8643, 27, 2, PL_CCC__22 } /* canonicalcombiningclass=ccc22 */, - { 0, 8096, 2841, 4, 6, PL_COPT } /* scx=coptic */, - { 0, 6890, 2674, 4, 19, PL_SUNDANESESUP } /* blk=sundanesesupplement */, - { 1, 7689, 2150, 3, 19, PL_HLUW } /* isanatolianhieroglyphs */, - { 5, 2229, 217, 17, 1, PL_L_AMP_ } /* generalcategory=l_ */, - { 0, 5284, 7997, 13, 2, PL_CI } /* caseignorable=y */, - { 0, 7288, 7992, 8, 4, PL_SC__BUHD } /* script=buhid */, - { 3, 8096, 2484, 4, 4, PL_EGYP } /* scx=egyp */, - { 10, 3129, 8372, 17, 4, PL_LATN } /* scriptextensions=latn */, - { 9, 7288, 8560, 7, 4, PL_TIBT } /* script=tibt */, - { 7, 8096, 4509, 4, 15, PL_SARB } /* scx=oldsoutharabian */, - { 0, 8096, 8044, 4, 4, PL_PHLI } /* scx=phli */, - { 3, 6210, 541, 3, 29, PL_CJKEXTB } /* incjkunifiedideographsextensionb */, - { 0, 184, 7492, 2, 7, PL_KNDA } /* iskannada */, - { 0, 1417, 48, 9, 1, PL_P } /* category=p */, - { 0, 8240, 2086, 3, 21, PL_BC__PDI } /* bc=popdirectionalisolate */, - { 6, 2229, 47, 17, 1, PL_LM } /* generalcategory=lm */, - { 9, 7380, 8633, 4, 3, PL_CCC__103 } /* ccc=103 */, - { 0, 7380, 8675, 4, 3, PL_CCC__BL } /* ccc=218 */, - { 0, 6890, 5705, 4, 12, PL_CYRILLICEXTC } /* blk=cyrillicextc */, - { 17, 3129, 7499, 17, 7, PL_KALI } /* scriptextensions=kayahli */, - { 11, 6756, 7997, 10, 2, PL_SD } /* softdotted=y */, - { 0, 4420, 1077, 4, 2, PL_CPRT } /* iscprt */, - { 1, 4542, 5434, 3, 3, PL_TAML } /* istaml */, - { 1, 8240, 2088, 3, 3, PL_BC__PDI } /* bc=pdi */, - { 0, 184, 1354, 2, 24, PL_COMPEX } /* isfullcompositionexclusion */, - { 1, 5645, 2913, 10, 18, PL_BC__ET } /* bidiclass=europeanterminator */, - { 0, 8488, 0, 4, 0, PL_RJNG } /* rjng */, - { 2, 7689, 5233, 3, 12, PL_AEGEANNUMBERS } /* isaegeannumbers */, - { 0, 5657, 7768, 5, 6, -PL_BIDIM } /* bidim=false */, - { 0, 21, 1589, 2, 23, PL_LATINEXTADDITIONAL } /* inlatinextendedadditional */, - { 2, 3129, 8428, 17, 4, PL_NEWA } /* scriptextensions=newa */, - { 1, 1206, 7640, 3, 6, PL_INTAITHAM } /* intaitham */, - { 1, 3129, 7208, 17, 8, PL_HIRA } /* scriptextensions=hiragana */, - { 0, 7288, 8412, 7, 4, PL_MTEI } /* script=mtei */, - { 0, 7136, 568, 6, 2, PL_NB } /* block=nb */, - { 3, 7136, 4614, 6, 8, PL_VEDICEXT } /* block=vedicext */, - { 0, 1960, 0, 21, 0, PL_CJKRADICALSSUP } /* cjkradicalssupplement */, - { 0, 7227, 1887, 5, 5, PL_POSIXLOWER } /* posixlower */, - { 2, 7459, 3458, 3, 4, PL_SC__MANI } /* sc=mani */, - { 1, 2859, 1209, 18, 5, PL_DT__SUP } /* decompositiontype=super */, - { 0, 8086, 7768, 5, 6, -PL_QMARK } /* qmark=false */, - { 0, 8472, 0, 4, 0, PL_PRTI } /* prti */, - { 8, 5544, 8717, 13, 3, PL_NV__3_SLASH_4 } /* numericvalue=3/4 */, - { 0, 5250, 0, 8, 0, PL_XPOSIXXDIGIT } /* hexdigit */, - { 4, 6221, 1029, 4, 4, PL_INCOPTIC } /* incoptic */, - { 2, 7380, 8187, 4, 2, PL_CCC__27 } /* ccc=27 */, - { 0, 8296, 0, 4, 0, PL_GONM } /* gonm */, - { 2, 4314, 8133, 13, 3, PL_JG__AIN } /* joininggroup=ain */, - { 3, 8572, 4466, 3, 2, PL_WB__DQ } /* wb=dq */, - { 0, 3738, 0, 9, 0, PL_LATIN1 } /* latin1sup */, - { 1, 1746, 8935, 21, 2, PL_GCB__XX } /* graphemeclusterbreak=xx */, - { 5, 7136, 7534, 6, 7, PL_NB } /* block=noblock */, - { 1, 8340, 6516, 3, 10, PL_JG__AFRICANFEH } /* jg=africanfeh */, - { 0, 6890, 892, 4, 18, PL_INVS } /* blk=variationselectors */, - { 9, 4659, 0, 14, 0, PL_ANCIENTSYMBOLS } /* ancientsymbols */, - { 9, 8572, 18, 3, 2, PL_RI } /* wb=ri */, - { 3, 6890, 2128, 4, 21, PL_YIJING } /* blk=yijinghexagramsymbols */, - { 0, 8096, 78, 4, 6, PL_ARAB } /* scx=arabic */, - { 3, 2859, 3191, 18, 3, PL_DT__MED } /* decompositiontype=med */, - { 0, 5645, 8801, 10, 3, PL_BC__LRE } /* bidiclass=lre */, - { 7, 8816, 8905, 3, 2, PL_NV__39 } /* nv=39 */, - { 2, 7344, 7951, 4, 5, PL_XIDS } /* xids=true */, - { 2, 7136, 3594, 6, 16, PL_ARABICSUP } /* block=arabicsupplement */, - { 1, 7288, 8116, 7, 5, PL_SC__TAML } /* script=tamil */, - { 18, 7459, 8420, 3, 4, PL_NARB } /* sc=narb */, - { 11, 6210, 3469, 3, 3, PL_INCHAM } /* incham */, - { 0, 6210, 3675, 3, 15, PL_CYPRIOTSYLLABARY } /* incypriotsyllabary */, - { 2, 7459, 7527, 3, 7, PL_SC__MULT } /* sc=multani */, - { 0, 6505, 0, 11, 0, PL_YISYLLABLES } /* yisyllables */, - { 8, 184, 2617, 2, 19, PL_MODIFIERTONELETTERS } /* ismodifiertoneletters */, - { 0, 8011, 38, 3, 2, PL_XPOSIXDIGIT } /* gc=nd */, - { 0, 7459, 6005, 3, 12, PL_HUNG } /* sc=oldhungarian */, - { 2, 6890, 2895, 4, 18, PL_ETHIOPICSUP } /* blk=ethiopicsupplement */, - { 0, 6263, 5107, 10, 14, PL_LB__PO } /* linebreak=postfixnumeric */, - { 2, 5645, 37, 10, 2, PL_BC__EN } /* bidiclass=en */, - { 10, 8376, 496, 3, 7, PL_LB__NU } /* lb=numeric */, - { 0, 6098, 0, 11, 0, PL_L_AMP_ } /* casedletter */, - { 0, 8011, 48, 3, 1, PL_P } /* gc=p */, - { 3, 8340, 3475, 3, 17, PL_JG__MANICHAEANHUNDRED } /* jg=manichaeanhundred */, - { 6, 8011, 2521, 3, 2, PL_PF } /* gc=pf */, - { 3, 2236, 217, 10, 1, PL_L_AMP_ } /* category=l_ */, - { 0, 3424, 3581, 17, 2, PL_IDSB } /* idsbinaryoperator=t */, - { 0, 7459, 8260, 3, 4, PL_SC__CAKM } /* sc=cakm */, - { 0, 235, 0, 2, 0, PL_LO } /* lo */, - { 6, 6713, 8846, 3, 3, PL_IN__2_DOT_1 } /* in=v21 */, - { 1, 7288, 2107, 7, 7, PL_SC__SINH } /* script=sinhala */, - { 13, 7816, 3581, 6, 2, PL_GRBASE } /* grbase=t */, - { 3, 8096, 7019, 4, 4, PL_PERM } /* scx=perm */, - { 0, 8096, 8046, 4, 4, PL_LIMB } /* scx=limb */, - { 1, 8096, 8300, 4, 4, PL_GREK } /* scx=grek */, - { 8, 184, 1877, 3, 20, PL_CWL } /* ischangeswhenlowercased */, - { 31, 6890, 6766, 4, 10, PL_SUPARROWSA } /* blk=suparrowsa */, - { 3, 8011, 5136, 4, 13, PL_ZS } /* gc=spaceseparator */, - { 9, 6890, 2004, 6, 19, PL_ININSCRIPTIONALPARTHIAN } /* blk=inscriptionalparthian */, - { 0, 1234, 0, 24, 0, PL_ARABICPFA } /* arabicpresentationformsa */, - { 1, 974, 8684, 24, 3, PL_CCC__L } /* canonicalcombiningclass=224 */, - { 5, 184, 8432, 2, 3, PL_NKO } /* isnko */, - { 1, 7288, 7145, 8, 7, PL_SC__BUGI } /* script=buginese */, - { 0, 8780, 3581, 3, 2, PL_CWT } /* cwt=t */, - { 1, 3129, 8308, 17, 4, PL_GURU } /* scriptextensions=guru */, - { 3, 6890, 3965, 4, 13, PL_MATHOPERATORS } /* blk=mathoperators */, - { 2, 690, 0, 30, 0, PL_CUNEIFORMNUMBERS } /* cuneiformnumbersandpunctuation */, - { 0, 18, 7768, 2, 6, -PL_RI } /* ri=false */, - { 12, 7478, 6767, 3, 9, PL_SUPARROWSA } /* issuparrowsa */, - { 1, 974, 1483, 24, 2, PL_CCC__DB } /* canonicalcombiningclass=db */, - { 4, 7457, 7112, 5, 8, PL_INSC__AVAGRAHA } /* insc=avagraha */, - { 0, 7798, 3223, 6, 2, -PL_COMPEX } /* compex=n */, - { 4, 8376, 534, 3, 2, PL_LB__NS } /* lb=ns */, - { 13, 7436, 0, 7, 0, PL_ELBA } /* elbasan */, - { 4, 3129, 8600, 17, 4, PL_QAAI } /* scriptextensions=zinh */, - { 3, 6890, 7192, 4, 8, PL_INGUJARATI } /* blk=gujarati */, - { 8, 6706, 8882, 10, 3, PL_IN__6_DOT_3 } /* presentin=v63 */, - { 0, 7136, 7387, 6, 7, PL_CJKEXTA } /* block=cjkexta */, - { 13, 8096, 7569, 4, 7, PL_OSMA } /* scx=osmanya */, - { 2, 2636, 0, 9, 0, PL_MONG } /* mongolian */, - { 0, 6890, 4827, 4, 14, PL_KANGXI } /* blk=kangxiradicals */, - { 0, 7136, 802, 6, 6, PL_ARROWS } /* block=arrows */, - { 2, 4542, 7647, 3, 6, PL_TAVT } /* istaiviet */, - { 13, 8795, 25, 3, 1, PL_INVS } /* invs */, - { 0, 7459, 7359, 3, 7, PL_AVST } /* sc=avestan */, - { 1, 3424, 7768, 17, 2, -PL_IDSB } /* idsbinaryoperator=f */, - { 2, 6890, 8428, 4, 4, PL_INNEWA } /* blk=newa */, - { 0, 3129, 2636, 17, 4, PL_MONG } /* scriptextensions=mong */, - { 2, 7689, 7957, 3, 4, PL_ADLM } /* isadlam */, - { 0, 184, 5079, 2, 14, PL_MN } /* isnonspacingmark */, - { 0, 7136, 6567, 7, 9, PL_BOXDRAWING } /* block=boxdrawing */, - { 8, 7459, 8540, 3, 4, PL_SC__TAML } /* sc=taml */, - { 4, 6483, 3223, 4, 3, -PL_XIDC } /* xidc=no */, - { 1, 7227, 96, 5, 5, PL_POSIXALPHA } /* posixalpha */, - { 0, 7816, 7768, 6, 2, -PL_GRBASE } /* grbase=f */, - { 0, 7288, 8061, 7, 5, PL_OGAM } /* script=ogham */, - { 2, 2841, 0, 18, 0, PL_COPTICEPACTNUMBERS } /* copticepactnumbers */, - { 8, 3129, 7604, 17, 4, PL_SIDD } /* scriptextensions=sidd */, - { 0, 8096, 8111, 4, 5, PL_TAKR } /* scx=takri */, - { 3, 974, 8051, 24, 5, PL_CCC__7 } /* canonicalcombiningclass=nukta */, - { 4, 7478, 1210, 3, 24, PL_SUPERANDSUB } /* issuperscriptsandsubscripts */, - { 2, 6472, 8789, 10, 3, PL_WB__EBG } /* wordbreak=ebg */, - { 2, 5544, 8168, 13, 4, PL_NV__17_SLASH_2 } /* numericvalue=17/2 */, - { 3, 5544, 8617, 13, 2, PL_NV__31 } /* numericvalue=31 */, - { 0, 7359, 0, 7, 0, PL_AVST } /* avestan */, - { 0, 4402, 224, 3, 2, PL_INMRO } /* inmro */, - { 0, 2990, 6538, 4, 8, PL_ARABICEXTA } /* inarabicexta */, - { 0, 7288, 8600, 7, 4, PL_SC__QAAI } /* script=zinh */, - { 0, 6890, 7120, 4, 8, PL_INBALINESE } /* blk=balinese */, - { 1, 8086, 3581, 5, 2, PL_QMARK } /* qmark=t */, - { 9, 7380, 7714, 4, 2, PL_CCC__30 } /* ccc=30 */, - { 1, 8416, 0, 4, 0, PL_MYMR } /* mymr */, - { 4, 8026, 3165, 5, 18, PL_INPC__TOPANDLEFTANDRIGHT } /* inpc=topandleftandright */, - { 0, 184, 4104, 2, 8, PL_BAMUMSUP } /* isbamumsup */, - { 0, 4284, 4042, 14, 16, PL_LB__H3 } /* hangulsyllabletype=lvtsyllable */, - { 0, 184, 183, 2, 20, PL_MISCSYMBOLS } /* ismiscellaneoussymbols */, - { 0, 2895, 0, 8, 0, PL_ETHI } /* ethiopic */, - { 0, 808, 0, 28, 0, PL_PHONETICEXTSUP } /* phoneticextensionssupplement */, - { 6, 184, 601, 3, 29, PL_CJKEXTD } /* iscjkunifiedideographsextensiond */, - { 0, 8340, 4785, 3, 14, PL_JG__HAMZAONHEHGOAL } /* jg=hamzaonhehgoal */, - { 0, 5968, 7017, 3, 8, PL_INOLDPERMIC } /* inoldpermic */, - { 8, 5583, 3223, 13, 3, -PL_QMARK } /* quotationmark=no */, - { 0, 3129, 6008, 17, 4, PL_HUNG } /* scriptextensions=hung */, - { 0, 6263, 8921, 10, 2, PL_LB__BK } /* linebreak=bk */, - { 0, 3129, 7436, 17, 4, PL_ELBA } /* scriptextensions=elba */, - { 1, 184, 2788, 3, 10, PL_CHEROKEESUP } /* ischerokeesup */, - { 1, 4284, 3219, 14, 18, PL_HST__NA } /* hangulsyllabletype=notapplicable */, - { 0, 8011, 24, 3, 1, PL_L } /* gc=l */, - { 4, 11, 3223, 3, 2, -PL_DIA } /* dia=n */, - { 1, 1426, 1520, 22, 23, PL_INSC__CONSONANTPRECEDINGREPHA } /* indicsyllabiccategory=consonantprecedingrepha */, - { 0, 4314, 5023, 13, 14, PL_JG__MANICHAEANYODH } /* joininggroup=manichaeanyodh */, - { 1, 4314, 6523, 13, 3, PL_JG__FEH } /* joininggroup=feh */, - { 3, 8016, 3914, 4, 5, PL_GCB__XX } /* gcb=other */, - { 0, 3129, 8116, 17, 5, PL_TAML } /* scriptextensions=tamil */, - { 1, 7136, 892, 6, 28, PL_VSSUP } /* block=variationselectorssupplement */, - { 3, 8096, 8584, 4, 4, PL_XSUX } /* scx=xsux */, - { 0, 7459, 7590, 3, 7, PL_SC__SHRD } /* sc=sharada */, - { 6, 7136, 6406, 6, 11, PL_INSORASOMPENG } /* block=sorasompeng */, - { 2, 690, 0, 9, 0, PL_XSUX } /* cuneiform */, - { 0, 7689, 27, 3, 2, PL_ALL } /* isall */, - { 0, 186, 7997, 2, 4, PL_CE } /* ce=yes */, - { 0, 7136, 2877, 6, 13, PL_DEVANAGARIEXT } /* block=devanagariext */, - { 0, 8822, 3581, 3, 2, PL_PCM } /* pcm=t */, - { 2, 8572, 34, 3, 6, PL_WB__EXTEND } /* wb=extend */, - { 3, 6076, 7951, 11, 5, PL_BIDIC } /* bidicontrol=true */, - { 2, 5134, 3511, 4, 15, PL_PATWS } /* ispatternwhitespace */, - { 0, 1426, 6998, 22, 9, PL_INSC__NONJOINER } /* indicsyllabiccategory=nonjoiner */, - { 5, 2236, 5814, 10, 11, PL_NL } /* category=letternumber */, - { 4, 6613, 1379, 3, 23, PL_HIGHPUSURROGATES } /* ishighprivateusesurrogates */, - { 0, 8288, 5969, 3, 12, PL_DT__NONCANON } /* dt=noncanonical */, - { 0, 8816, 7738, 3, 6, PL_NV__600000 } /* nv=600000 */, - { 0, 7200, 0, 8, 0, PL_GURU } /* gurmukhi */, - { 0, 5544, 7714, 13, 6, PL_NV__300000 } /* numericvalue=300000 */, - { 0, 184, 3738, 2, 6, PL_LATIN1 } /* islatin1 */, - { 2, 8096, 8600, 4, 4, PL_QAAI } /* scx=zinh */, - { 4, 8340, 5849, 3, 12, PL_JG__MALAYALAMLLA } /* jg=malayalamlla */, - { 2, 184, 7128, 2, 4, PL_BASS } /* isbass */, - { 0, 7459, 8091, 3, 5, PL_RUNR } /* sc=runic */, - { 1, 3129, 8420, 17, 4, PL_NARB } /* scriptextensions=narb */, - { 24, 4284, 3577, 14, 17, PL_GCB__T } /* hangulsyllabletype=trailingjamo */, - { 0, 2100, 125, 3, 2, PL_OCR } /* isocr */, - { 0, 6706, 8888, 10, 3, PL_IN__8 } /* presentin=v80 */, - { 1, 8272, 7768, 4, 2, -PL_CWCF } /* cwcf=f */, - { 8, 8248, 5488, 4, 4, PL_BPT__N } /* bpt=none */, - { 2, 6210, 1940, 3, 20, PL_CJKCOMPATFORMS } /* incjkcompatibilityforms */, - { 1, 5192, 59, 3, 3, PL_IDEO } /* isideo */, - { 0, 974, 3262, 24, 9, PL_CCC__BL } /* canonicalcombiningclass=belowleft */, - { 0, 7288, 7918, 7, 4, PL_SC__THAA } /* script=thaa */, - { 0, 7136, 6806, 6, 10, PL_INWARANGCITI } /* block=warangciti */, - { 0, 7288, 7882, 7, 6, PL_LYDI } /* script=lydian */, - { 2, 1159, 7768, 25, 6, -PL_CWKCF } /* changeswhennfkccasefolded=false */, - { 0, 7136, 7256, 6, 8, PL_KANAEXTA } /* block=kanaexta */, - { 1, 4402, 317, 3, 32, PL_MISCMATHSYMBOLSB } /* inmiscellaneousmathematicalsymbolsb */, - { 0, 4464, 0, 15, 0, PL_DT__CAN } /* nfdquickcheck=n */, - { 3, 96, 3581, 5, 2, PL_XPOSIXALPHA } /* alpha=t */, - { 0, 8816, 7702, 3, 2, PL_NV__20 } /* nv=20 */, - { 2, 2229, 3084, 16, 9, PL_Z } /* generalcategory=separator */, - { 0, 5544, 5219, 13, 4, PL_NV__1000 } /* numericvalue=1000 */, - { 1, 6554, 4105, 3, 7, PL_BAMUMSUP } /* inbamumsup */, - { 8, 8096, 7822, 4, 4, PL_HATR } /* scx=hatr */, - { 6, 8001, 0, 5, 0, PL_XPOSIXCNTRL } /* cntrl */, - { 0, 3594, 0, 9, 0, PL_ARABICSUP } /* arabicsup */, - { 0, 6484, 7997, 10, 2, PL_IDC } /* idcontinue=y */, - { 11, 1204, 0, 2, 0, PL_PO } /* po */, - { 2, 7136, 7152, 6, 8, PL_INDUPLOYAN } /* block=duployan */, - { 3, 8340, 7930, 3, 6, PL_JG__YUDHHE } /* jg=yudhhe */, - { 17, 7459, 2787, 3, 4, PL_CHER } /* sc=cher */, - { 1, 2985, 7997, 18, 2, PL_IDST } /* idstrinaryoperator=y */, - { 4, 6713, 8876, 3, 3, PL_IN__6_DOT_1 } /* in=v61 */, - { 9, 7136, 7527, 6, 7, PL_INMULTANI } /* block=multani */, - { 7, 1426, 7688, 22, 7, PL_INSC__VISARGA } /* indicsyllabiccategory=visarga */, - { 22, 184, 1919, 3, 20, PL_CWU } /* ischangeswhenuppercased */, - { 1, 6554, 3611, 3, 10, PL_BOPOMOFOEXT } /* inbopomofoext */, - { 3, 1701, 3581, 2, 2, PL_SD } /* sd=t */, - { 6, 7457, 4058, 5, 5, PL_INSC__VOWEL } /* insc=vowel */, - { 19, 2229, 3914, 16, 16, PL_PO } /* generalcategory=otherpunctuation */, - { 0, 21, 7882, 2, 6, PL_INLYDIAN } /* inlydian */, - { 4, 2985, 3223, 3, 3, -PL_IDS } /* ids=no */, - { 4, 1887, 7997, 9, 2, PL_XPOSIXLOWER } /* lowercase=y */, - { 2, 2108, 2543, 4, 17, PL_JAMOEXTA } /* inhanguljamoextendeda */, - { 3, 7459, 8520, 3, 4, PL_SHAW } /* sc=shaw */, - { 14, 8096, 1401, 4, 4, PL_SIND } /* scx=sind */, - { 0, 7459, 8111, 3, 5, PL_SC__TAKR } /* sc=takri */, - { 3, 7019, 0, 4, 0, PL_PERM } /* perm */, - { 0, 3129, 6806, 17, 4, PL_WARA } /* scriptextensions=wara */, - { 9, 4630, 1174, 3, 3, PL_UCAS } /* isucas */, - { 0, 1346, 2053, 5, 5, PL_GREEKEXT } /* ingreekext */, - { 1, 2990, 7106, 4, 6, PL_INARMENIAN } /* inarmenian */, - { 0, 974, 5349, 24, 13, PL_CCC__IS } /* canonicalcombiningclass=iotasubscript */, - { 9, 6890, 720, 4, 16, PL_ENCLOSEDALPHANUM } /* blk=enclosedalphanum */, - { 0, 96, 7768, 5, 2, -PL_XPOSIXALPHA } /* alpha=f */, - { 0, 8096, 2531, 4, 4, PL_MULT } /* scx=mult */, - { 0, 6890, 570, 4, 30, PL_CJKEXTC } /* blk=cjkunifiedideographsextensionc */, - { 0, 1426, 4434, 22, 15, PL_INSC__MODIFYINGLETTER } /* indicsyllabiccategory=modifyingletter */, - { 0, 4479, 7996, 5, 5, PL_NFKCQC__Y } /* nfkcqc=yes */, - { 1, 5544, 8136, 13, 4, PL_NV___MINUS_1_SLASH_2 } /* numericvalue=-1/2 */, - { 1, 974, 8640, 27, 2, PL_CCC__18 } /* canonicalcombiningclass=ccc18 */, - { 5, 5583, 7997, 13, 2, PL_QMARK } /* quotationmark=y */, - { 33, 5544, 8188, 13, 4, PL_NV__7_SLASH_12 } /* numericvalue=7/12 */, - { 4, 7136, 5400, 7, 7, PL_INBALINESE } /* block=balinese */, - { 5, 5583, 0, 13, 0, PL_QMARK } /* quotationmark */, - { 14, 11, 3581, 2, 2, PL_DI } /* di=t */, - { 0, 7136, 7129, 7, 7, PL_INBASSAVAH } /* block=bassavah */, - { 0, 7380, 727, 4, 2, PL_CCC__DA } /* ccc=da */, - { 0, 2484, 0, 4, 0, PL_EGYP } /* egyp */, - { 0, 3129, 4644, 17, 15, PL_ZANB } /* scriptextensions=zanabazarsquare */, - { 1, 6554, 3611, 3, 7, PL_INBOPOMOFO } /* inbopomofo */, - { 0, 1448, 3995, 3, 15, PL_SYRIACSUP } /* insyriacsupplement */, - { 0, 7136, 5777, 6, 6, PL_INHEBREW } /* block=hebrew */, - { 6, 7459, 8208, 3, 4, PL_AHOM } /* sc=ahom */, - { 0, 5544, 8165, 13, 3, PL_NV__5_SLASH_2 } /* numericvalue=5/2 */, - { 10, 5657, 3223, 5, 3, -PL_BIDIM } /* bidim=no */, - { 0, 8096, 8404, 4, 4, PL_MLYM } /* scx=mlym */, - { 1, 2100, 4525, 3, 14, PL_PS } /* isopenpunctuation */, - { 1, 7136, 849, 6, 14, PL_PUA } /* block=privateusearea */, - { 9, 7380, 8648, 7, 3, PL_CCC__130 } /* ccc=ccc130 */, - { 3, 184, 8784, 3, 2, PL_CWU } /* iscwu */, - { 4, 1918, 7951, 21, 5, PL_CWU } /* changeswhenuppercased=true */, - { 1, 2990, 3596, 4, 14, PL_ARABICSUP } /* inarabicsupplement */, - { 0, 8006, 7768, 5, 2, -PL_CWKCF } /* cwkcf=f */, - { 0, 7136, 8046, 6, 5, PL_INLIMBU } /* block=limbu */, - { 4, 2100, 3915, 3, 4, PL_C } /* isother */, - { 0, 6890, 3882, 4, 16, PL_MYANMAREXTA } /* blk=myanmarextendeda */, - { 1, 8508, 6554, 4, 3, PL_SC__LINB } /* sc=linb */, - { 1, 3373, 1083, 17, 7, PL_EA__H } /* eastasianwidth=halfwidth */, - { 10, 8816, 8137, 3, 3, PL_NV__1_SLASH_2 } /* nv=1/2 */, - { 1, 3129, 4010, 17, 4, PL_TANG } /* scriptextensions=tang */, - { 0, 184, 6318, 2, 11, PL_MYANMAREXTB } /* ismyanmarextb */, - { 1, 7810, 0, 4, 0, PL_GOTH } /* goth */, - { 8, 8011, 982, 3, 2, PL_L_AMP_ } /* gc=lc */, - { 0, 4239, 7997, 4, 4, PL_DASH } /* dash=yes */, - { 0, 7144, 0, 8, 0, PL_BUGI } /* buginese */, - { 0, 21, 7499, 2, 7, PL_KALI } /* inkayahli */, - { 6, 7136, 3147, 6, 11, PL_TAIXUANJING } /* block=taixuanjing */, - { 2, 6210, 7409, 3, 6, PL_CJKEXTD } /* incjkextd */, - { 8, 7478, 6429, 3, 10, PL_SUPERANDSUB } /* issuperandsub */, - { 1, 6890, 349, 4, 33, PL_SUPMATHOPERATORS } /* blk=supplementalmathematicaloperators */, - { 1, 974, 8899, 24, 2, PL_CCC__35 } /* canonicalcombiningclass=35 */, - { 0, 7882, 0, 4, 0, PL_LYDI } /* lydi */, - { 0, 3129, 8396, 17, 4, PL_MERC } /* scriptextensions=merc */, - { 0, 11, 7768, 2, 2, -PL_DI } /* di=f */, - { 10, 7459, 7639, 3, 7, PL_LANA } /* sc=taitham */, - { 2, 8096, 3611, 5, 7, PL_BOPO } /* scx=bopomofo */, - { 4, 1543, 0, 23, 0, PL_GEOMETRICSHAPESEXT } /* geometricshapesextended */, - { 0, 6890, 3994, 4, 6, PL_INSYRIAC } /* blk=syriac */, - { 0, 7457, 3978, 5, 16, PL_INSC__SYLLABLEMODIFIER } /* insc=syllablemodifier */, - { 0, 1202, 3223, 3, 3, -PL_DEP } /* dep=no */, - { 0, 6890, 7956, 4, 5, PL_INADLAM } /* blk=adlam */, - { 0, 184, 4841, 2, 14, PL_LATINEXTB } /* islatinextendedb */, - { 0, 8360, 0, 4, 0, PL_KTHI } /* kthi */, - { 0, 1133, 7997, 26, 4, PL_PCM } /* prependedconcatenationmark=yes */, - { 0, 6890, 1543, 4, 15, PL_GEOMETRICSHAPES } /* blk=geometricshapes */, - { 1, 184, 3469, 3, 3, PL_CHAM } /* ischam */, - { 2, 4542, 7919, 3, 3, PL_THAA } /* isthaa */, - { 0, 7459, 2674, 3, 9, PL_SUND } /* sc=sundanese */, - { 0, 184, 5258, 2, 13, PL_BLOCKELEMENTS } /* isblockelements */, - { 0, 8006, 3581, 5, 2, PL_CWKCF } /* cwkcf=t */, - { 0, 7288, 8056, 7, 5, PL_NSHU } /* script=nushu */, - { 0, 8196, 8714, 4, 3, PL_AGE__3_DOT_2 } /* age=3.2 */, - { 11, 1206, 8112, 3, 4, PL_INTAKRI } /* intakri */, - { 0, 7288, 2895, 7, 4, PL_ETHI } /* script=ethi */, - { 2, 184, 1184, 2, 25, PL_DI } /* isdefaultignorablecodepoint */, - { 0, 6890, 3390, 4, 11, PL_ETHIOPICEXT } /* blk=ethiopicext */, - { 0, 7136, 3111, 6, 18, PL_RUMI } /* block=ruminumeralsymbols */, - { 1, 6890, 864, 4, 28, PL_SUPPUAB } /* blk=supplementaryprivateuseareab */, - { 4, 8016, 4561, 4, 2, PL_WB__EB } /* gcb=eb */, - { 10, 8816, 8140, 3, 4, PL_NV__1_SLASH_10 } /* nv=1/10 */, - { 1, 2221, 5181, 3, 10, PL_GCB__V } /* hst=voweljamo */, - { 1, 8096, 3583, 5, 3, PL_BRAI } /* scx=brai */, - { 2, 8288, 8576, 3, 4, PL_EA__F } /* dt=wide */, - { 42, 7288, 1160, 7, 4, PL_SC__HANG } /* script=hang */, - { 8, 184, 2, 3, 1, PL_CI } /* isci */, - { 49, 8011, 1372, 3, 2, PL_LU } /* gc=lu */, - { 0, 8340, 8133, 3, 3, PL_JG__AIN } /* jg=ain */, - { 0, 3129, 5427, 17, 9, PL_MLYM } /* scriptextensions=malayalam */, - { 2, 6944, 0, 9, 0, PL_LATINEXTC } /* latinextc */, - { 0, 6210, 43, 3, 35, PL_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatibilityideographssupplement */, - { 0, 4542, 8561, 3, 3, PL_TIBT } /* istibt */, - { 0, 184, 1681, 3, 5, PL_ZYYY } /* iscommon */, - { 1, 6890, 6120, 4, 11, PL_DOMINO } /* blk=dominotiles */, - { 1, 7597, 0, 7, 0, PL_SHAW } /* shavian */, - { 3, 21, 1589, 2, 14, PL_LATINEXTA } /* inlatinextendeda */, - { 0, 6210, 691, 3, 8, PL_INCUNEIFORM } /* incuneiform */, - { 5, 1812, 0, 22, 0, PL_TRANSPORTANDMAP } /* transportandmapsymbols */, - { 0, 21, 3738, 2, 6, PL_LATIN1 } /* inlatin1 */, - { 0, 6613, 1082, 3, 25, PL_HALFANDFULLFORMS } /* ishalfwidthandfullwidthforms */, - { 0, 7912, 0, 4, 0, PL_TELU } /* telu */, - { 2, 3129, 8056, 17, 5, PL_NSHU } /* scriptextensions=nushu */, - { 0, 7288, 7912, 7, 4, PL_SC__TELU } /* script=telu */, - { 0, 7288, 7956, 7, 5, PL_SC__ADLM } /* script=adlam */, - { 17, 8783, 7951, 3, 5, PL_CWU } /* cwu=true */, - { 5, 2108, 2543, 4, 8, PL_JAMO } /* inhanguljamo */, - { 0, 7288, 6989, 7, 9, PL_TALU } /* script=newtailue */, - { 0, 117, 2271, 4, 18, PL_ININSCRIPTIONALPAHLAVI } /* ininscriptionalpahlavi */, - { 0, 184, 8352, 2, 4, PL_KHMR } /* iskhmr */, - { 3, 6890, 8208, 4, 4, PL_INAHOM } /* blk=ahom */, - { 2, 8096, 3566, 4, 11, PL_SGNW } /* scx=signwriting */, - { 2, 122, 0, 9, 0, PL_DIA } /* diacritic */, - { 2, 8288, 4653, 3, 6, PL_DT__SQR } /* dt=square */, - { 13, 4402, 1769, 3, 21, PL_MISCTECHNICAL } /* inmiscellaneoustechnical */, - { 1, 4479, 8256, 5, 3, PL_NFKCQC__N } /* nfkcqc=n */, - { 0, 3129, 2674, 17, 4, PL_SUND } /* scriptextensions=sund */, - { 0, 5968, 7570, 3, 6, PL_INOSMANYA } /* inosmanya */, - { 5, 7351, 0, 4, 0, PL_TALE } /* tale */, - { 1, 6647, 9, 4, 16, PL_CANS } /* iscanadianaboriginal */, - { 0, 7136, 2841, 6, 6, PL_INCOPTIC } /* block=coptic */, - { 0, 5544, 8176, 13, 4, PL_NV__3_SLASH_20 } /* numericvalue=3/20 */, - { 1, 5544, 3743, 13, 1, PL_NV__1 } /* numericvalue=1 */, - { 2, 7380, 8669, 4, 3, PL_CCC__202 } /* ccc=202 */, - { 2, 7136, 4841, 6, 14, PL_LATINEXTB } /* block=latinextendedb */, - { 0, 7478, 7612, 3, 3, PL_SOYO } /* issoyo */, - { 1, 7136, 2503, 6, 19, PL_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumsup */, - { 0, 184, 5037, 2, 14, PL_SK } /* ismodifiersymbol */, - { 1, 5544, 7750, 13, 3, PL_NV__800 } /* numericvalue=800 */, - { 1, 2236, 24, 10, 1, PL_LL } /* category=ll */, - { 0, 8376, 8457, 3, 2, PL_LB__SG } /* lb=sg */, - { 1, 8795, 1479, 3, 2, PL_INVAI } /* invai */, - { 2, 7016, 0, 9, 0, PL_PERM } /* oldpermic */, - { 0, 1426, 4743, 22, 14, PL_INSC__GEMINATIONMARK } /* indicsyllabiccategory=geminationmark */, - { 0, 8540, 0, 4, 0, PL_TAML } /* taml */, - { 2, 5645, 3930, 10, 16, PL_BC__S } /* bidiclass=segmentseparator */, - { 1, 6890, 7900, 4, 6, PL_INREJANG } /* blk=rejang */, - { 1, 8816, 8862, 3, 2, PL_NV__41 } /* nv=41 */, - { 0, 1202, 3581, 3, 2, PL_DEP } /* dep=t */, - { 1, 7344, 3581, 8, 2, PL_XIDS } /* xidstart=t */, - { 0, 184, 8046, 2, 4, PL_LIMB } /* islimb */, - { 1, 8006, 7768, 5, 6, -PL_CWKCF } /* cwkcf=false */, - { 0, 1358, 3223, 20, 3, -PL_CE } /* compositionexclusion=no */, - { 1, 184, 6989, 2, 9, PL_TALU } /* isnewtailue */, - { 0, 6890, 1812, 4, 22, PL_TRANSPORTANDMAP } /* blk=transportandmapsymbols */, - { 0, 6706, 8750, 10, 3, PL_IN__6_DOT_1 } /* presentin=6.1 */, - { 1, 3129, 8408, 17, 4, PL_MRO } /* scriptextensions=mroo */, - { 2, 5544, 8907, 13, 2, PL_NV__44 } /* numericvalue=44 */, - { 16, 7104, 0, 8, 0, PL_ARMN } /* armenian */, - { 2, 3373, 3, 15, 1, PL_EA__F } /* eastasianwidth=f */, - { 0, 6221, 150, 4, 33, PL_DIACRITICALSSUP } /* incombiningdiacriticalmarkssupplement */, - { 0, 5544, 7941, 13, 2, PL_NV__11 } /* numericvalue=11 */, - { 8, 184, 436, 2, 5, PL_NCHAR } /* isnchar */, - { 2, 892, 3581, 17, 2, PL_VS } /* variationselector=t */, - { 3, 1918, 7997, 21, 4, PL_CWU } /* changeswhenuppercased=yes */, - { 4, 7380, 8685, 7, 2, PL_CCC__24 } /* ccc=ccc24 */, - { 2, 6713, 7756, 3, 1, PL_IN__9 } /* in=9 */, - { 2, 5192, 2986, 3, 17, PL_IDST } /* isidstrinaryoperator */, - { 1, 974, 8168, 27, 2, PL_CCC__17 } /* canonicalcombiningclass=ccc17 */, - { 0, 8096, 8245, 5, 3, PL_BHKS } /* scx=bhks */, - { 0, 8340, 6285, 3, 11, PL_JG__MALAYALAMRA } /* jg=malayalamra */, - { 9, 7136, 3560, 6, 17, PL_SUTTONSIGNWRITING } /* block=suttonsignwriting */, - { 0, 7380, 5219, 4, 2, PL_CCC__10 } /* ccc=10 */, - { 2, 3129, 8320, 17, 4, PL_HLUW } /* scriptextensions=hluw */, - { 3, 7344, 7768, 8, 2, -PL_XIDS } /* xidstart=f */, - { 0, 8096, 1108, 5, 4, PL_BATK } /* scx=batak */, - { 2, 949, 7997, 2, 4, PL_CI } /* ci=yes */, - { 0, 415, 3223, 11, 3, -PL_IDEO } /* ideographic=no */, - { 0, 6713, 8858, 3, 3, PL_IN__4 } /* in=v40 */, - { 0, 7136, 1282, 6, 24, PL_CJKSYMBOLS } /* block=cjksymbolsandpunctuation */, - { 2, 7956, 0, 5, 0, PL_ADLM } /* adlam */, - { 0, 8076, 3223, 5, 2, -PL_PATWS } /* patws=n */, - { 1, 184, 8300, 2, 4, PL_GREK } /* isgrek */, - { 6, 8026, 2289, 5, 4, PL_INPC__LEFT } /* inpc=left */, - { 7, 2229, 8941, 16, 2, PL_ZS } /* generalcategory=zs */, - { 1, 7288, 8432, 7, 3, PL_NKO } /* script=nko */, - { 1, 184, 2023, 2, 21, PL_LOE } /* islogicalorderexception */, - { 1, 2985, 7997, 4, 2, PL_IDST } /* idst=y */, - { 0, 6472, 34, 10, 2, PL_WB__EX } /* wordbreak=ex */, - { 3, 2044, 0, 21, 0, PL_MEETEIMAYEKEXT } /* meeteimayekextensions */, - { 3, 7136, 1702, 6, 12, PL_DIACRITICALS } /* block=diacriticals */, - { 0, 7380, 8703, 7, 2, PL_CCC__34 } /* ccc=ccc34 */, - { 2, 184, 43, 3, 25, PL_CJKCOMPATIDEOGRAPHS } /* iscjkcompatibilityideographs */, - { 0, 7982, 7154, 4, 6, PL_INDUPLOYAN } /* induployan */, - { 4, 6890, 3288, 4, 17, PL_INCAUCASIANALBANIAN } /* blk=caucasianalbanian */, - { 2, 5192, 6, 3, 2, PL_IDC } /* isidc */, - { 1, 8096, 7061, 4, 9, PL_SAMR } /* scx=samaritan */, - { 0, 76, 7762, 2, 6, PL_NT__DI } /* nt=digit */, - { 0, 3129, 8232, 17, 4, PL_AVST } /* scriptextensions=avst */, - { 1, 7288, 2674, 7, 9, PL_SUND } /* script=sundanese */, - { 1, 436, 3223, 5, 2, -PL_NCHAR } /* nchar=n */, - { 3, 8572, 8935, 3, 2, PL_WB__XX } /* wb=xx */, - { 2, 949, 3223, 2, 2, -PL_CI } /* ci=n */, - { 3, 7288, 8220, 7, 4, PL_SC__ARMN } /* script=armn */, - { 1, 7834, 6472, 6, 4, PL_POSIXWORD } /* isperlword */, - { 0, 892, 7768, 17, 2, -PL_VS } /* variationselector=f */, - { 7, 1746, 18, 21, 2, PL_RI } /* graphemeclusterbreak=ri */, - { 3, 184, 7402, 3, 6, PL_CJKEXTC } /* iscjkextc */, - { 1, 3390, 0, 17, 0, PL_ETHIOPICEXTA } /* ethiopicextendeda */, - { 4, 2859, 5969, 18, 12, PL_DT__NONCANON } /* decompositiontype=noncanonical */, - { 12, 5657, 3581, 12, 2, PL_BIDIM } /* bidimirrored=t */, - { 0, 4923, 0, 12, 0, PL_INMANICHAEAN } /* inmanichaean */, - { 6, 8096, 2787, 4, 8, PL_CHER } /* scx=cherokee */, - { 1, 184, 4239, 2, 15, PL_PD } /* isdashpunctuation */, - { 5, 974, 7750, 24, 1, PL_CCC__8 } /* canonicalcombiningclass=8 */, - { 1, 184, 6908, 2, 9, PL_EMOTICONS } /* isemoticons */, - { 1, 8016, 18, 4, 2, PL_RI } /* gcb=ri */, - { 0, 3129, 3882, 17, 7, PL_MYMR } /* scriptextensions=myanmar */, - { 10, 6890, 2877, 4, 13, PL_DEVANAGARIEXT } /* blk=devanagariext */, - { 0, 1159, 7951, 25, 5, PL_CWKCF } /* changeswhennfkccasefolded=true */, - { 1, 5544, 7756, 13, 2, PL_NV__90 } /* numericvalue=90 */, - { 1, 84, 7997, 4, 4, PL_MATH } /* math=yes */, - { 0, 24, 0, 1, 0, PL_L } /* l */, - { 2, 4449, 7375, 14, 5, PL_NFCQC__M } /* nfcquickcheck=maybe */, - { 1, 974, 7702, 24, 2, PL_CCC__20 } /* canonicalcombiningclass=20 */, - { 0, 1834, 7951, 21, 5, PL_CWCF } /* changeswhencasefolded=true */, - { 0, 3129, 7810, 17, 4, PL_GOTH } /* scriptextensions=goth */, - { 1, 8777, 7997, 3, 4, PL_CWL } /* cwl=yes */, - { 0, 6696, 0, 10, 0, PL_PHNX } /* phoenician */, - { 1, 2598, 0, 19, 0, PL_MERO } /* meroitichieroglyphs */, - { 16, 21, 7506, 2, 7, PL_INLINEARA } /* inlineara */, - { 6, 7288, 7786, 7, 6, PL_SC__CAKM } /* script=chakma */, - { 0, 2369, 3183, 20, 18, PL_VO__TR } /* verticalorientation=transformedrotated */, - { 1, 6613, 2327, 3, 3, PL_HATR } /* ishatr */, - { 0, 8240, 5413, 3, 3, PL_BC__RLO } /* bc=rlo */, - { 1, 974, 8171, 27, 2, PL_CCC__23 } /* canonicalcombiningclass=ccc23 */, - { 11, 7136, 7882, 6, 6, PL_INLYDIAN } /* block=lydian */, - { 0, 7136, 2541, 6, 19, PL_JAMOEXTA } /* block=hanguljamoextendeda */, - { 0, 4314, 8837, 13, 3, PL_JG__TAH } /* joininggroup=tah */, - { 0, 8096, 1111, 4, 4, PL_KANA } /* scx=kana */, - { 1, 4314, 3834, 13, 16, PL_JG__MANICHAEANTWENTY } /* joininggroup=manichaeantwenty */, - { 1, 184, 2967, 2, 8, PL_GEOR } /* isgeorgian */, - { 1, 8268, 0, 4, 0, PL_CPRT } /* cprt */, - { 2, 4284, 4042, 14, 8, PL_LB__H3 } /* hangulsyllabletype=lvt */, - { 0, 8096, 8056, 4, 5, PL_NSHU } /* scx=nushu */, - { 1, 5657, 3223, 12, 3, -PL_BIDIM } /* bidimirrored=no */, - { 0, 7816, 7951, 6, 5, PL_GRBASE } /* grbase=true */, - { 1, 6210, 1283, 3, 9, PL_CJKSYMBOLS } /* incjksymbols */, - { 0, 7345, 7768, 7, 2, -PL_IDS } /* idstart=f */, - { 4, 2134, 7768, 3, 6, -PL_XPOSIXXDIGIT } /* hex=false */, - { 2, 7288, 8106, 7, 5, PL_SC__TALE } /* script=taile */, - { 8, 2229, 24, 17, 1, PL_LL } /* generalcategory=ll */, - { 0, 7224, 1887, 8, 5, PL_XPOSIXLOWER } /* isxposixlower */, - { 5, 4449, 0, 15, 0, PL_COMPEX } /* nfcquickcheck=n */, - { 2, 7459, 7248, 3, 4, PL_SC__JAVA } /* sc=java */, - { 0, 7226, 6472, 6, 4, PL_XPOSIXWORD } /* xposixword */, - { 2, 6210, 571, 3, 29, PL_CJKEXTC } /* incjkunifiedideographsextensionc */, - { 12, 1358, 3223, 20, 2, -PL_CE } /* compositionexclusion=n */, - { 3, 6472, 7804, 11, 6, PL_WB__NL } /* wordbreak=newline */, - { 19, 7459, 7144, 3, 8, PL_SC__BUGI } /* sc=buginese */, - { 1, 7478, 0, 7, 0, PL_XPOSIXSPACE } /* isspace */, - { 1, 8816, 7750, 3, 4, PL_NV__8000 } /* nv=8000 */, - { 27, 7288, 6917, 7, 9, PL_SC__QAAI } /* script=inherited */, - { 7, 7380, 8640, 7, 2, PL_CCC__18 } /* ccc=ccc18 */, - { 1, 8096, 7660, 4, 7, PL_TIRH } /* scx=tirhuta */, - { 0, 8011, 698, 3, 2, PL_MN } /* gc=mn */, - { 0, 11, 7997, 2, 4, PL_DI } /* di=yes */, - { 4, 7478, 1613, 3, 22, PL_SHORTHANDFORMATCONTROLS } /* isshorthandformatcontrols */, - { 8, 7471, 8081, 7, 5, PL_POSIXPRINT } /* isposixprint */, - { 0, 5284, 3581, 13, 2, PL_CI } /* caseignorable=t */, - { 0, 7136, 4799, 6, 14, PL_HIGHSURROGATES } /* block=highsurrogates */, - { 0, 1929, 7997, 5, 2, PL_XPOSIXUPPER } /* upper=y */, - { 0, 5645, 2931, 10, 18, PL_BC__FSI } /* bidiclass=firststrongisolate */, - { 0, 1981, 0, 21, 0, PL_CYRILLICSUP } /* cyrillicsupplementary */, - { 5, 6890, 7336, 4, 8, PL_INUGARITIC } /* blk=ugaritic */, - { 6, 5250, 7768, 8, 6, -PL_XPOSIXXDIGIT } /* hexdigit=false */, - { 0, 3129, 7128, 17, 8, PL_BASS } /* scriptextensions=bassavah */, - { 1, 7380, 8691, 4, 2, PL_CCC__28 } /* ccc=28 */, - { 0, 184, 7876, 2, 6, PL_LYCI } /* islycian */, - { 4, 2750, 0, 19, 0, PL_TERM } /* terminalpunctuation */, - { 0, 2108, 2817, 5, 6, PL_HALFMARKS } /* inhalfmarks */, - { 0, 3147, 0, 11, 0, PL_TAIXUANJING } /* taixuanjing */, - { 0, 7288, 2002, 7, 21, PL_PRTI } /* script=inscriptionalparthian */, - { 7, 184, 4269, 2, 15, PL_DIACRITICALSSUP } /* isdiacriticalssup */, - { 1, 7816, 7997, 6, 2, PL_GRBASE } /* grbase=y */, - { 0, 4757, 0, 14, 0, PL_GREXT } /* graphemeextend */, - { 6, 2134, 3581, 3, 2, PL_XPOSIXXDIGIT } /* hex=t */, - { 2, 5031, 0, 3, 0, PL_ANY } /* any */, - { 1, 7136, 3738, 6, 16, PL_LATIN1 } /* block=latin1supplement */, - { 1, 7380, 2590, 4, 2, PL_CCC__1 } /* ccc=ov */, - { 7, 184, 27, 2, 2, PL_LL } /* isll */, - { 0, 3566, 0, 11, 0, PL_SGNW } /* signwriting */, - { 1, 7288, 7822, 7, 6, PL_HATR } /* script=hatran */, - { 6, 1202, 7997, 3, 4, PL_DEP } /* dep=yes */, - { 1, 3129, 7876, 17, 4, PL_LYCI } /* scriptextensions=lyci */, - { 10, 6890, 6505, 4, 11, PL_YISYLLABLES } /* blk=yisyllables */, - { 0, 8096, 2269, 4, 20, PL_PHLI } /* scx=inscriptionalpahlavi */, - { 3, 4314, 5741, 13, 12, PL_JG__FINALSEMKATH } /* joininggroup=finalsemkath */, - { 53, 7288, 8540, 7, 4, PL_SC__TAML } /* script=taml */, - { 1, 6890, 2787, 4, 11, PL_CHEROKEESUP } /* blk=cherokeesup */, - { 8, 8780, 7997, 3, 2, PL_CWT } /* cwt=y */, - { 1, 7288, 8580, 7, 4, PL_XPEO } /* script=xpeo */, - { 5, 7288, 4105, 8, 4, PL_BAMU } /* script=bamum */, - { 0, 3754, 0, 16, 0, PL_LINEARBIDEOGRAMS } /* linearbideograms */, - { 2, 48, 0, 1, 0, PL_P } /* p */, - { 6, 1417, 1679, 9, 2, PL_PC } /* category=pc */, - { 0, 6890, 7401, 4, 7, PL_CJKEXTC } /* blk=cjkextc */, - { 4, 3390, 0, 11, 0, PL_ETHIOPICEXT } /* ethiopicext */, - { 1, 7136, 6696, 6, 10, PL_INPHOENICIAN } /* block=phoenician */, - { 0, 8196, 8870, 4, 3, PL_AGE__5_DOT_2 } /* age=v52 */, - { 0, 7459, 8580, 3, 4, PL_XPEO } /* sc=xpeo */, - { 0, 8504, 8101, 3, 5, PL_SB__ST } /* sb=sterm */, - { 3, 5544, 7726, 13, 6, PL_NV__432000 } /* numericvalue=432000 */, - { 0, 21, 7858, 2, 6, PL_INKHOJKI } /* inkhojki */, - { 0, 1282, 0, 24, 0, PL_CJKSYMBOLS } /* cjksymbolsandpunctuation */, - { 0, 3129, 5777, 17, 6, PL_HEBR } /* scriptextensions=hebrew */, - { 4, 8795, 893, 3, 27, PL_VSSUP } /* invariationselectorssupplement */, - { 0, 7459, 2149, 3, 20, PL_HLUW } /* sc=anatolianhieroglyphs */, - { 0, 5544, 1335, 13, 3, PL_NV__NAN } /* numericvalue=nan */, - { 1, 8011, 218, 3, 2, PL_PE } /* gc=pe */, - { 1, 8096, 8200, 4, 4, PL_AGHB } /* scx=aghb */, - { 3, 106, 0, 6, 0, PL_S } /* symbol */, - { 0, 8096, 3882, 4, 7, PL_MYMR } /* scx=myanmar */, - { 2, 184, 1887, 2, 9, PL_XPOSIXLOWER } /* islowercase */, - { 24, 8816, 7732, 3, 6, PL_NV__500000 } /* nv=500000 */, - { 2, 3129, 6406, 17, 11, PL_SORA } /* scriptextensions=sorasompeng */, - { 13, 8588, 0, 4, 0, PL_YI } /* yiii */, - { 5, 8011, 0, 4, 0, PL_S } /* gc=s */, - { 0, 2221, 4046, 3, 12, PL_LB__H3 } /* hst=lvtsyllable */, - { 9, 7136, 2895, 6, 11, PL_ETHIOPICSUP } /* block=ethiopicsup */, - { 3, 7459, 2107, 3, 7, PL_SC__SINH } /* sc=sinhala */, - { 1, 8894, 472, 3, 2, PL_VO__TU } /* vo=tu */, - { 49, 21, 8209, 3, 3, PL_INAHOM } /* inahom */, - { 1, 7136, 1585, 6, 4, PL_JAMO } /* block=jamo */, - { 1, 3129, 8536, 17, 4, PL_TALU } /* scriptextensions=talu */, - { 8, 3129, 690, 17, 9, PL_XSUX } /* scriptextensions=cuneiform */, - { 0, 7380, 8636, 7, 3, PL_CCC__107 } /* ccc=ccc107 */, - { 9, 8096, 7152, 4, 8, PL_DUPL } /* scx=duployan */, - { 3, 4314, 5861, 13, 12, PL_JG__MALAYALAMNGA } /* joininggroup=malayalamnga */, - { 0, 7136, 3611, 7, 10, PL_BOPOMOFOEXT } /* block=bopomofoext */, - { 5, 7459, 7653, 3, 7, PL_TIBT } /* sc=tibetan */, - { 0, 6616, 3223, 10, 2, -PL_DEP } /* deprecated=n */, - { 5, 4104, 0, 8, 0, PL_BAMUMSUP } /* bamumsup */, - { 4, 7459, 2787, 3, 8, PL_CHER } /* sc=cherokee */, - { 0, 8795, 4615, 3, 14, PL_VEDICEXT } /* invedicextensions */, - { 0, 4479, 7375, 15, 5, PL_NFCQC__M } /* nfkcquickcheck=maybe */, - { 1, 7136, 3882, 6, 16, PL_MYANMAREXTA } /* block=myanmarextendeda */, - { 0, 7136, 148, 6, 35, PL_DIACRITICALSSUP } /* block=combiningdiacriticalmarkssupplement */, - { 0, 3129, 7312, 17, 4, PL_TAGB } /* scriptextensions=tagb */, - { 0, 8026, 469, 3, 10, PL_INPUNCTUATION } /* inpunctuation */, - { 0, 6210, 4225, 3, 14, PL_CURRENCYSYMBOLS } /* incurrencysymbols */, - { 1, 1426, 2446, 22, 19, PL_INSC__CONSONANTHEADLETTER } /* indicsyllabiccategory=consonantheadletter */, - { 0, 479, 0, 31, 0, PL_MATHALPHANUM } /* mathematicalalphanumericsymbols */, - { 0, 21, 6935, 2, 9, PL_LATINEXTB } /* inlatinextb */, - { 2, 6472, 4653, 10, 2, PL_WB__SQ } /* wordbreak=sq */, - { 2, 6890, 779, 4, 29, PL_MISCARROWS } /* blk=miscellaneoussymbolsandarrows */, - { 1, 1417, 3690, 9, 16, PL_PF } /* category=finalpunctuation */, - { 5, 7288, 8380, 7, 4, PL_SC__LINA } /* script=lina */, - { 0, 6890, 8408, 4, 3, PL_INMRO } /* blk=mro */, - { 0, 7288, 2787, 7, 4, PL_CHER } /* script=cher */, - { 5, 8816, 8165, 3, 3, PL_NV__5_SLASH_2 } /* nv=5/2 */, - { 8, 7136, 8556, 6, 4, PL_INTHAI } /* block=thai */, - { 8, 8816, 7710, 3, 2, PL_NV__60 } /* nv=60 */, - { 0, 217, 25, 29, 1, PL__PERL_PROBLEMATIC_LOCALE_FOLDS } /* _perl_problematic_locale_folds */, - { 14, 184, 1202, 2, 3, PL_DEP } /* isdep */, - { 2, 8096, 1566, 4, 6, PL_HANG } /* scx=hangul */, - { 0, 96, 3223, 10, 2, -PL_XPOSIXALPHA } /* alphabetic=n */, - { 0, 7478, 44, 3, 1, PL_SK } /* issk */, - { 0, 3129, 7604, 17, 7, PL_SIDD } /* scriptextensions=siddham */, - { 0, 5544, 7727, 13, 2, PL_NV__32 } /* numericvalue=32 */, - { 4, 8288, 3690, 3, 5, PL_DT__FIN } /* dt=final */, - { 0, 7459, 8524, 3, 4, PL_SC__SHRD } /* sc=shrd */, - { 0, 18, 0, 2, 0, PL_RI } /* ri */, - { 4, 2369, 3201, 20, 18, PL_VO__TU } /* verticalorientation=transformedupright */, - { 0, 7459, 2249, 3, 10, PL_SC__GLAG } /* sc=glagolitic */, - { 2, 6890, 7506, 4, 7, PL_INLINEARA } /* blk=lineara */, - { 1, 5777, 0, 6, 0, PL_HEBR } /* hebrew */, - { 0, 6806, 0, 10, 0, PL_WARA } /* warangciti */, - { 0, 7136, 7007, 6, 9, PL_INOLDITALIC } /* block=olditalic */, - { 2, 4314, 5505, 13, 13, PL_JG__MANICHAEANTEN } /* joininggroup=manichaeanten */, - { 10, 4923, 481, 4, 29, PL_MATHALPHANUM } /* inmathematicalalphanumericsymbols */, - { 0, 3021, 0, 18, 0, PL_LATINEXTADDITIONAL } /* latinextadditional */, - { 0, 6890, 5121, 4, 14, PL_INPSALTERPAHLAVI } /* blk=psalterpahlavi */, - { 4, 2229, 25, 16, 1, PL_S } /* generalcategory=s */, - { 0, 2859, 3690, 18, 5, PL_DT__FIN } /* decompositiontype=final */, - { 6, 184, 8304, 2, 4, PL_GUJR } /* isgujr */, - { 3, 7288, 8608, 7, 4, PL_ZZZZ } /* script=zzzz */, - { 9, 8786, 9, 3, 2, PL_EA__NA } /* ea=na */, - { 1, 8572, 5777, 3, 12, PL_LB__HL } /* wb=hebrewletter */, - { 0, 6076, 3223, 11, 2, -PL_BIDIC } /* bidicontrol=n */, - { 2, 6472, 5435, 10, 2, PL_WB__ML } /* wordbreak=ml */, - { 2, 6890, 1306, 4, 24, PL_DIACRITICALSFORSYMBOLS } /* blk=combiningmarksforsymbols */, - { 0, 2636, 0, 19, 0, PL_MONGOLIANSUP } /* mongoliansupplement */, - { 8, 7136, 5121, 6, 14, PL_INPSALTERPAHLAVI } /* block=psalterpahlavi */, - { 16, 5645, 7768, 5, 2, -PL_BIDIC } /* bidic=f */, - { 0, 122, 7951, 9, 5, PL_DIA } /* diacritic=true */, - { 9, 7227, 1929, 5, 5, PL_POSIXUPPER } /* posixupper */, - { 0, 8016, 73, 4, 2, PL_LB__EM } /* gcb=em */, - { 5, 184, 5801, 2, 12, PL_KHMERSYMBOLS } /* iskhmersymbols */, - { 0, 7459, 8071, 3, 5, PL_OSGE } /* sc=osage */, - { 6, 7380, 6556, 4, 10, PL_CCC__BR } /* ccc=belowright */, - { 0, 7380, 7924, 4, 6, PL_CCC__9 } /* ccc=virama */, - { 5, 6263, 1496, 10, 2, PL_LB__CB } /* linebreak=cb */, - { 1, 184, 1001, 2, 11, PL_ENCLOSEDCJK } /* isenclosedcjk */, - { 4, 2229, 1627, 16, 7, PL_XPOSIXCNTRL } /* generalcategory=control */, - { 1, 4198, 2969, 4, 6, PL_INGEORGIAN } /* ingeorgian */, - { 2, 7136, 2598, 6, 19, PL_MERO } /* block=meroitichieroglyphs */, - { 6, 3129, 4494, 17, 15, PL_NARB } /* scriptextensions=oldnortharabian */, - { 0, 0, 0, 42, 0, PL_UCASEXT } /* unifiedcanadianaboriginalsyllabicsextended */, - { 10, 2229, 6351, 16, 11, PL_NO } /* generalcategory=othernumber */, - { 5, 8011, 32, 3, 2, PL_CS } /* gc=cs */, - { 7, 7288, 8111, 7, 4, PL_SC__TAKR } /* script=takr */, - { 1, 6706, 8879, 10, 3, PL_IN__6_DOT_2 } /* presentin=v62 */, - { 4, 8272, 0, 4, 0, PL_CWCF } /* cwcf */, - { 1, 8408, 0, 3, 0, PL_MRO } /* mro */, - { 1, 7288, 8536, 7, 4, PL_TALU } /* script=talu */, - { 0, 8026, 7044, 3, 8, PL_INPAUCINHAU } /* inpaucinhau */, - { 2, 184, 2598, 2, 19, PL_MERO } /* ismeroitichieroglyphs */, - { 0, 7288, 6806, 7, 10, PL_WARA } /* script=warangciti */, - { 0, 1887, 3223, 9, 3, -PL_XPOSIXLOWER } /* lowercase=no */, - { 0, 8196, 9, 4, 2, PL_AGE__NA } /* age=na */, - { 2, 6890, 8091, 4, 5, PL_INRUNIC } /* blk=runic */, - { 8, 2985, 3581, 18, 2, PL_IDST } /* idstrinaryoperator=t */, - { 3, 6890, 7443, 4, 7, PL_INGRANTHA } /* blk=grantha */, - { 1, 7136, 7674, 6, 7, PL_UCASEXT } /* block=ucasext */, - { 22, 2229, 5814, 17, 11, PL_NL } /* generalcategory=letternumber */, - { 4, 1897, 0, 21, 0, PL_CWT } /* changeswhentitlecased */, - { 1, 1206, 4011, 3, 5, PL_INTANGUT } /* intangut */, - { 3, 6890, 6776, 4, 10, PL_SUPARROWSB } /* blk=suparrowsb */, - { 0, 7136, 2674, 6, 19, PL_SUNDANESESUP } /* block=sundanesesupplement */, - { 2, 8016, 5772, 4, 5, PL_WB__EB } /* gcb=ebase */, - { 8, 6890, 2674, 4, 12, PL_SUNDANESESUP } /* blk=sundanesesup */, - { 4, 8780, 7951, 3, 5, PL_CWT } /* cwt=true */, - { 0, 6890, 1589, 4, 14, PL_LATINEXTA } /* blk=latinextendeda */, - { 4, 8026, 809, 3, 17, PL_PHONETICEXT } /* inphoneticextensions */, - { 1, 1589, 0, 23, 0, PL_LATINEXTADDITIONAL } /* latinextendedadditional */, - { 1, 6706, 8846, 10, 3, PL_IN__2_DOT_1 } /* presentin=v21 */, - { 2, 7653, 0, 7, 0, PL_TIBT } /* tibetan */, - { 7, 7288, 6008, 7, 4, PL_HUNG } /* script=hung */, - { 4, 4284, 4026, 14, 6, PL_GCB__L } /* hangulsyllabletype=l */, - { 0, 8096, 5121, 4, 14, PL_PHLP } /* scx=psalterpahlavi */, - { 5, 6613, 7829, 3, 5, PL_HYPHEN } /* ishyphen */, - { 8, 6613, 4832, 3, 3, PL_HIRA } /* ishira */, - { 0, 6798, 0, 8, 0, PL_ASSIGNED } /* assigned */, - { 4, 2229, 1027, 16, 2, PL_SO } /* generalcategory=so */, - { 2, 3129, 3610, 17, 4, PL_BOPO } /* scriptextensions=bopo */, - { 1, 184, 3882, 2, 16, PL_MYANMAREXTA } /* ismyanmarextendeda */, - { 0, 7798, 7997, 6, 4, PL_COMPEX } /* compex=yes */, - { 5, 7288, 7639, 7, 7, PL_LANA } /* script=taitham */, - { 8, 7136, 2044, 6, 11, PL_INMEETEIMAYEK } /* block=meeteimayek */, - { 0, 3129, 8316, 17, 4, PL_HANO } /* scriptextensions=hano */, - { 0, 6263, 6666, 10, 10, PL_LB__NS } /* linebreak=nonstarter */, - { 0, 8400, 0, 4, 0, PL_MIAO } /* miao */, - { 0, 4314, 5009, 13, 14, PL_JG__MANICHAEANTETH } /* joininggroup=manichaeanteth */, - { 1, 1897, 3223, 21, 2, -PL_CWT } /* changeswhentitlecased=n */, - { 17, 5544, 5219, 13, 13, PL_NV__1000000000000 } /* numericvalue=1000000000000 */, - { 41, 4314, 6726, 13, 10, PL_JG__REVERSEDPE } /* joininggroup=reversedpe */, - { 4, 4314, 6064, 13, 3, PL_JG__GAF } /* joininggroup=gaf */, - { 0, 1887, 3581, 5, 2, PL_XPOSIXLOWER } /* lower=t */, - { 1, 2895, 0, 4, 0, PL_ETHI } /* ethi */, - { 0, 3129, 2360, 17, 4, PL_MAND } /* scriptextensions=mand */, - { 23, 2990, 804, 4, 4, PL_ARROWS } /* inarrows */, - { 1, 6041, 0, 12, 0, PL_PLAYINGCARDS } /* playingcards */, - { 0, 7136, 1686, 6, 16, PL_INDICNUMBERFORMS } /* block=indicnumberforms */, - { 1, 3129, 7, 17, 18, PL_CANS } /* scriptextensions=canadianaboriginal */, - { 0, 7136, 2465, 6, 11, PL_COUNTINGROD } /* block=countingrod */, - { 1, 6616, 3223, 10, 3, -PL_DEP } /* deprecated=no */, - { 0, 2985, 7768, 18, 2, -PL_IDST } /* idstrinaryoperator=f */, - { 0, 184, 3675, 3, 15, PL_CYPRIOTSYLLABARY } /* iscypriotsyllabary */, - { 1, 7689, 5610, 3, 11, PL_ALPHABETICPF } /* isalphabeticpf */, - { 3, 4771, 0, 14, 0, PL_INGREEK } /* greekandcoptic */, - { 8, 513, 3223, 16, 2, -PL_UIDEO } /* unifiedideograph=n */, - { 4, 21, 7492, 2, 7, PL_INKANNADA } /* inkannada */, - { 8, 184, 2949, 2, 18, PL_INPUNCTUATION } /* isgeneralpunctuation */, - { 0, 3770, 0, 16, 0, PL_LINEARBSYLLABARY } /* linearbsyllabary */, - { 5, 2369, 3521, 4, 5, PL_VERTSPACE } /* vertspace */, - { 1, 184, 3323, 3, 16, PL_CYRILLICEXTA } /* iscyrillicextendeda */, - { 1, 1354, 7951, 24, 5, PL_COMPEX } /* fullcompositionexclusion=true */, - { 0, 1543, 0, 18, 0, PL_GEOMETRICSHAPESEXT } /* geometricshapesext */, - { 0, 8096, 7882, 4, 6, PL_LYDI } /* scx=lydian */, - { 23, 6890, 540, 4, 30, PL_CJKEXTB } /* blk=cjkunifiedideographsextensionb */, - { 1, 8816, 7944, 3, 2, PL_NV__12 } /* nv=12 */, - { 0, 7136, 2636, 6, 12, PL_MONGOLIANSUP } /* block=mongoliansup */, - { 2, 2229, 106, 16, 6, PL_S } /* generalcategory=symbol */, - { 5, 8011, 1621, 3, 6, PL_CF } /* gc=format */, - { 4, 7136, 2249, 6, 10, PL_INGLAGOLITIC } /* block=glagolitic */, - { 1, 1417, 849, 9, 10, PL_CO } /* category=privateuse */, - { 1, 6890, 3339, 4, 17, PL_CYRILLICEXTB } /* blk=cyrillicextendedb */, - { 1, 7459, 7128, 3, 8, PL_BASS } /* sc=bassavah */, - { 3, 7288, 7043, 7, 9, PL_PAUC } /* script=paucinhau */, - { 6, 184, 5717, 2, 12, PL_ETHIOPICEXTA } /* isethiopicexta */, - { 0, 660, 0, 30, 0, PL_CJKEXTF } /* cjkunifiedideographsextensionf */, - { 13, 5544, 7710, 13, 2, PL_NV__60 } /* numericvalue=60 */, - { 3, 8240, 2289, 3, 11, PL_BC__L } /* bc=lefttoright */, - { 2, 1746, 34, 21, 2, PL_GREXT } /* graphemeclusterbreak=ex */, - { 0, 3509, 3581, 17, 2, PL_PATWS } /* patternwhitespace=t */, - { 2, 3946, 7768, 16, 6, -PL_STERM } /* sentenceterminal=false */, - { 0, 3129, 5933, 17, 12, PL_GONM } /* scriptextensions=masaramgondi */, - { 40, 7288, 4105, 8, 3, PL_BAMU } /* script=bamu */, - { 0, 8026, 2295, 5, 5, PL_INPC__RIGHT } /* inpc=right */, - { 0, 7478, 107, 3, 5, PL_S } /* issymbol */, - { 1, 7136, 6318, 6, 11, PL_MYANMAREXTB } /* block=myanmarextb */, - { 1, 4402, 5959, 4, 10, PL_INMENDEKIKAKUI } /* inmendekikakui */, - { 1, 7136, 8432, 6, 3, PL_INNKO } /* block=nko */, - { 0, 8096, 8540, 4, 4, PL_TAML } /* scx=taml */, - { 8, 3946, 7768, 16, 2, -PL_STERM } /* sentenceterminal=f */, - { 0, 6210, 3273, 4, 15, PL_UCAS } /* incanadiansyllabics */, - { 0, 3129, 6806, 17, 10, PL_WARA } /* scriptextensions=warangciti */, - { 1, 7288, 1797, 7, 4, PL_SC__MODI } /* script=modi */, - { 2, 184, 3390, 2, 11, PL_ETHIOPICEXT } /* isethiopicext */, - { 1, 1417, 5082, 9, 11, PL_MC } /* category=spacingmark */, - { 3, 7459, 8460, 3, 4, PL_SC__PHLP } /* sc=phlp */, - { 6, 5134, 5094, 3, 13, PL_PHONETICEXTSUP } /* isphoneticextsup */, - { 0, 7380, 8654, 7, 3, PL_CCC__133 } /* ccc=ccc133 */, - { 1, 184, 7513, 2, 7, PL_MAND } /* ismandaic */, - { 0, 7457, 8051, 5, 5, PL_INSC__NUKTA } /* insc=nukta */, - { 3, 3129, 3458, 17, 10, PL_MANI } /* scriptextensions=manichaean */, - { 0, 7485, 17, 5, 1, PL_XPEO } /* isxpeo */, - { 1, 6890, 3898, 4, 16, PL_MYANMAREXTB } /* blk=myanmarextendedb */, - { 0, 6890, 3111, 4, 4, PL_RUMI } /* blk=rumi */, - { 2, 6890, 7513, 4, 7, PL_INMANDAIC } /* blk=mandaic */, - { 2, 4314, 5466, 13, 13, PL_JG__MANICHAEANNUN } /* joininggroup=manichaeannun */, - { 1, 4542, 7914, 4, 4, PL_TELU } /* istelugu */, - { 5, 8340, 5746, 3, 7, PL_JG__SEMKATH } /* jg=semkath */, - { 0, 3526, 3223, 17, 3, -PL_RI } /* regionalindicator=no */, - { 0, 8508, 7507, 4, 6, PL_SC__LINA } /* sc=lineara */, - { 0, 2100, 295, 3, 3, PL_OSMA } /* isosma */, - { 0, 6890, 3271, 4, 17, PL_UCAS } /* blk=canadiansyllabics */, - { 0, 6210, 7416, 3, 6, PL_CJKEXTE } /* incjkexte */, - { 2, 6890, 113, 4, 35, PL_DIACRITICALSFORSYMBOLS } /* blk=combiningdiacriticalmarksforsymbols */, - { 2, 974, 8901, 24, 2, PL_CCC__36 } /* canonicalcombiningclass=36 */, - { 0, 1929, 7768, 5, 6, -PL_XPOSIXUPPER } /* upper=false */, - { 1, 6890, 4614, 4, 15, PL_VEDICEXT } /* blk=vedicextensions */, - { 0, 974, 8224, 24, 4, PL_CCC__216 } /* canonicalcombiningclass=atar */, - { 0, 4314, 4792, 13, 3, PL_JG__HEH } /* joininggroup=heh */, - { 2, 7288, 8360, 7, 4, PL_SC__KTHI } /* script=kthi */, - { 1, 7136, 6005, 6, 12, PL_INOLDHUNGARIAN } /* block=oldhungarian */, - { 0, 8096, 8312, 4, 4, PL_HAN } /* scx=hani */, - { 3, 5557, 7768, 13, 2, -PL_PATSYN } /* patternsyntax=f */, - { 5, 7459, 8472, 3, 4, PL_PRTI } /* sc=prti */, - { 1, 8096, 7918, 4, 4, PL_THAA } /* scx=thaa */, - { 8, 4554, 7562, 14, 7, PL_SB__LE } /* sentencebreak=oletter */, - { 4, 8006, 7997, 5, 4, PL_CWKCF } /* cwkcf=yes */, - { 10, 6263, 202, 10, 2, PL_LB__SA } /* linebreak=sa */, - { 0, 184, 1589, 2, 14, PL_LATINEXTA } /* islatinextendeda */, - { 0, 184, 8086, 2, 5, PL_QMARK } /* isqmark */, - { 3, 1887, 7997, 9, 4, PL_XPOSIXLOWER } /* lowercase=yes */, - { 11, 8340, 5427, 3, 13, PL_JG__MALAYALAMLLLA } /* jg=malayalamllla */, - { 2, 3946, 3581, 16, 2, PL_STERM } /* sentenceterminal=t */, - { 1, 7876, 0, 6, 0, PL_LYCI } /* lycian */, - { 4, 8196, 8852, 4, 3, PL_AGE__3_DOT_1 } /* age=v31 */, - { 0, 184, 1160, 3, 24, PL_CWKCF } /* ischangeswhennfkccasefolded */, - { 10, 4644, 0, 15, 0, PL_ZANB } /* zanabazarsquare */, - { 4, 2100, 8449, 3, 3, PL_ORKH } /* isorkh */, - { 6, 8368, 0, 4, 0, PL_LAO } /* laoo */, - { 10, 21, 2128, 2, 21, PL_YIJING } /* inyijinghexagramsymbols */, - { 3, 1963, 0, 7, 0, PL_RADICAL } /* radical */, - { 4, 6613, 4800, 3, 13, PL_HIGHSURROGATES } /* ishighsurrogates */, - { 0, 7288, 7367, 8, 6, PL_SC__BENG } /* script=bengali */, - { 11, 8340, 2427, 3, 19, PL_JG__BURUSHASKIYEHBARREE } /* jg=burushaskiyehbarree */, - { 0, 5645, 3075, 10, 18, PL_BC__B } /* bidiclass=paragraphseparator */, - { 2, 8504, 8935, 3, 2, PL_SB__XX } /* sb=xx */, - { 1, 8376, 3642, 3, 16, PL_LB__CP } /* lb=closeparenthesis */, - { 1, 7459, 8476, 3, 4, PL_SC__COPT } /* sc=qaac */, - { 7, 5645, 2329, 10, 11, PL_BC__R } /* bidiclass=righttoleft */, - { 8, 8011, 1189, 3, 2, PL_LT } /* gc=lt */, - { 3, 7136, 1107, 6, 26, PL_KATAKANAEXT } /* block=katakanaphoneticextensions */, - { 5, 1701, 7951, 2, 5, PL_SD } /* sd=true */, - { 6, 1474, 1, 22, 1, PL_BPT__N } /* bidipairedbrackettype=n */, - { 4, 6935, 0, 9, 0, PL_LATINEXTB } /* latinextb */, - { 1, 6890, 1450, 4, 24, PL_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supsymbolsandpictographs */, - { 0, 8006, 0, 5, 0, PL_CWKCF } /* cwkcf */, - { 1, 4542, 2753, 5, 16, PL_TERM } /* isterminalpunctuation */, - { 8, 7136, 5336, 6, 13, PL_GREEKEXT } /* block=greekextended */, - { 2, 6890, 316, 4, 33, PL_MISCMATHSYMBOLSB } /* blk=miscellaneousmathematicalsymbolsb */, - { 0, 7380, 8639, 4, 3, PL_CCC__118 } /* ccc=118 */, - { 0, 7520, 0, 4, 0, PL_MARC } /* marc */, - { 0, 4104, 0, 5, 0, PL_BAMU } /* bamum */, - { 8, 8572, 5762, 3, 3, PL_LB__ZWJ } /* wb=zwj */, - { 0, 415, 3223, 11, 2, -PL_IDEO } /* ideographic=n */, - { 2, 4449, 7996, 4, 5, PL_NFCQC__Y } /* nfcqc=yes */, - { 2, 436, 7951, 5, 5, PL_NCHAR } /* nchar=true */, - { 0, 4402, 960, 3, 4, PL_MUSIC } /* inmusic */, - { 1, 8196, 8711, 4, 3, PL_AGE__3_DOT_1 } /* age=3.1 */, - { 2, 7288, 8280, 7, 4, PL_SC__CYRL } /* script=cyrl */, - { 0, 6890, 4614, 4, 8, PL_VEDICEXT } /* blk=vedicext */, - { 0, 2750, 3581, 19, 2, PL_TERM } /* terminalpunctuation=t */, - { 0, 3129, 7912, 17, 4, PL_TELU } /* scriptextensions=telu */, - { 8, 5544, 7714, 13, 2, PL_NV__30 } /* numericvalue=30 */, - { 0, 7136, 1635, 6, 23, PL_SUPPUNCTUATION } /* block=supplementalpunctuation */, - { 1, 5657, 7951, 5, 5, PL_BIDIM } /* bidim=true */, - { 2, 7639, 0, 7, 0, PL_LANA } /* taitham */, - { 1, 3516, 3581, 10, 2, PL_XPOSIXSPACE } /* whitespace=t */, - { 0, 7459, 8552, 3, 4, PL_SC__TGLG } /* sc=tglg */, - { 3, 8340, 5023, 3, 14, PL_JG__MANICHAEANYODH } /* jg=manichaeanyodh */, - { 2, 3129, 7918, 17, 6, PL_THAA } /* scriptextensions=thaana */, - { 1, 974, 3262, 24, 5, PL_CCC__B } /* canonicalcombiningclass=below */, - { 0, 1417, 6796, 9, 10, PL_CN } /* category=unassigned */, - { 2, 7136, 1589, 6, 14, PL_LATINEXTA } /* block=latinextendeda */, - { 0, 2023, 7768, 21, 6, -PL_LOE } /* logicalorderexception=false */, - { 0, 4402, 1798, 3, 3, PL_INMODI } /* inmodi */, - { 1, 5544, 5220, 13, 1, PL_NV__0 } /* numericvalue=0 */, - { 0, 7380, 2777, 4, 5, PL_CCC__A } /* ccc=above */, - { 0, 2236, 17, 10, 1, PL_LO } /* category=lo */, - { 0, 8816, 7750, 3, 6, PL_NV__800000 } /* nv=800000 */, - { 2, 5252, 0, 6, 0, PL_XPOSIXXDIGIT } /* xdigit */, - { 0, 7828, 3223, 6, 2, -PL_HYPHEN } /* hyphen=n */, - { 1, 8508, 8047, 4, 4, PL_SC__LIMB } /* sc=limbu */, - { 0, 8096, 8364, 4, 4, PL_LANA } /* scx=lana */, - { 0, 7136, 2674, 6, 9, PL_INSUNDANESE } /* block=sundanese */, - { 8, 6506, 8589, 3, 3, PL_YI } /* isyiii */, - { 0, 4314, 7448, 13, 3, PL_JG__HAH } /* joininggroup=hah */, - { 11, 6706, 8732, 10, 3, PL_IN__5 } /* presentin=5.0 */, - { 1, 6472, 4466, 10, 2, PL_WB__DQ } /* wordbreak=dq */, - { 1, 7136, 3994, 6, 6, PL_INSYRIAC } /* block=syriac */, - { 4, 8816, 7720, 3, 2, PL_NV__40 } /* nv=40 */, - { 1, 3129, 8304, 17, 4, PL_GUJR } /* scriptextensions=gujr */, - { 4, 4314, 727, 13, 3, PL_JG__DAL } /* joininggroup=dal */, - { 1, 34, 7768, 3, 6, -PL_EXT } /* ext=false */, - { 4, 6890, 4813, 4, 7, PL_KANASUP } /* blk=kanasup */, - { 1, 8011, 1690, 3, 2, PL_CN } /* gc=cn */, - { 6, 7459, 7681, 3, 7, PL_ZZZZ } /* sc=unknown */, - { 0, 1417, 106, 9, 6, PL_S } /* category=symbol */, - { 1, 6613, 7451, 3, 6, PL_HANO } /* ishanunoo */, - { 10, 1354, 7768, 24, 2, -PL_COMPEX } /* fullcompositionexclusion=f */, - { 0, 6890, 7646, 4, 7, PL_INTAIVIET } /* blk=taiviet */, - { 1, 8011, 8001, 3, 5, PL_XPOSIXCNTRL } /* gc=cntrl */, - { 10, 4923, 5827, 4, 5, PL_MAHJONG } /* inmahjong */, - { 0, 5544, 8624, 13, 3, PL_NV__1_SLASH_7 } /* numericvalue=1/7 */, - { 2, 5544, 8913, 13, 2, PL_NV__47 } /* numericvalue=47 */, - { 4, 184, 4404, 2, 15, PL_MERC } /* ismeroiticcursive */, - { 3, 7906, 2018, 4, 3, PL_SC__KTHI } /* sc=kthi */, - { 11, 3057, 0, 18, 0, PL_ORNAMENTALDINGBATS } /* ornamentaldingbats */, - { 0, 7288, 8436, 7, 4, PL_NSHU } /* script=nshu */, - { 18, 3129, 6980, 17, 9, PL_NBAT } /* scriptextensions=nabataean */, - { 0, 7380, 8187, 7, 2, PL_CCC__27 } /* ccc=ccc27 */, - { 11, 6706, 8747, 10, 3, PL_IN__6 } /* presentin=6.0 */, - { 0, 8240, 3039, 3, 18, PL_BC__LRI } /* bc=lefttorightisolate */, - { 0, 7380, 8160, 4, 2, PL_CCC__13 } /* ccc=13 */, - { 1, 4314, 8042, 14, 4, PL_JG__KHAPH } /* joininggroup=khaph */, - { 9, 4923, 7516, 5, 4, PL_INMANDAIC } /* inmandaic */, - { 3, 6713, 8861, 3, 3, PL_IN__4_DOT_1 } /* in=v41 */, - { 0, 5657, 7997, 12, 2, PL_BIDIM } /* bidimirrored=y */, - { 0, 6472, 1083, 10, 2, PL_LB__LF } /* wordbreak=lf */, - { 17, 3129, 2674, 17, 9, PL_SUND } /* scriptextensions=sundanese */, - { 0, 974, 7709, 27, 2, PL_CCC__16 } /* canonicalcombiningclass=ccc16 */, - { 0, 7380, 4538, 4, 2, PL_CCC__0 } /* ccc=nr */, - { 1, 3722, 0, 16, 0, PL_HIGHPUSURROGATES } /* highpusurrogates */, - { 0, 8096, 7597, 4, 7, PL_SHAW } /* scx=shavian */, - { 1, 8240, 2329, 3, 11, PL_BC__R } /* bc=righttoleft */, - { 1, 184, 2466, 3, 10, PL_COUNTINGROD } /* iscountingrod */, - { 4, 184, 5825, 2, 12, PL_MAHJONG } /* ismahjongtiles */, - { 2, 4314, 5502, 13, 3, PL_JG__TAW } /* joininggroup=taw */, - { 0, 8320, 0, 4, 0, PL_HLUW } /* hluw */, - { 0, 7136, 8428, 6, 4, PL_INNEWA } /* block=newa */, - { 1, 1855, 7997, 21, 2, PL_CWCM } /* changeswhencasemapped=y */, - { 0, 3129, 7359, 17, 7, PL_AVST } /* scriptextensions=avestan */, - { 0, 8096, 5777, 4, 4, PL_HEBR } /* scx=hebr */, - { 1, 4314, 5528, 13, 3, PL_JG__WAW } /* joininggroup=waw */, - { 0, 8340, 6533, 3, 3, PL_JG__QAF } /* jg=qaf */, - { 0, 7459, 8468, 3, 4, PL_MIAO } /* sc=plrd */, - { 3, 7646, 0, 7, 0, PL_TAVT } /* taiviet */, - { 4, 7457, 5297, 5, 13, PL_INSC__CONSONANTDEAD } /* insc=consonantdead */, - { 0, 8340, 4995, 3, 14, PL_JG__MANICHAEANRESH } /* jg=manichaeanresh */, - { 0, 6208, 7768, 5, 6, -PL_JOINC } /* joinc=false */, - { 0, 6472, 497, 11, 6, PL_WB__NU } /* wordbreak=numeric */, - { 25, 8011, 4569, 3, 15, PL_LT } /* gc=titlecaseletter */, - { 2, 8404, 0, 4, 0, PL_MLYM } /* mlym */, - { 1, 8376, 722, 3, 2, PL_LB__CL } /* lb=cl */, - { 0, 6554, 6882, 3, 8, PL_INBHAIKSUKI } /* inbhaiksuki */, - { 0, 1621, 0, 6, 0, PL_CF } /* format */, - { 1, 6890, 1702, 4, 22, PL_DIACRITICALSFORSYMBOLS } /* blk=diacriticalsforsymbols */, - { 0, 184, 7395, 3, 6, PL_CJKEXTB } /* iscjkextb */, - { 0, 8504, 3914, 3, 5, PL_SB__XX } /* sb=other */, - { 1, 3129, 5957, 17, 12, PL_MEND } /* scriptextensions=mendekikakui */, - { 5, 3424, 0, 4, 0, PL_IDSB } /* idsb */, - { 1, 7459, 8061, 3, 5, PL_OGAM } /* sc=ogham */, - { 8, 8011, 4239, 3, 15, PL_PD } /* gc=dashpunctuation */, - { 8, 7459, 6406, 3, 4, PL_SORA } /* sc=sora */, - { 11, 8532, 0, 4, 0, PL_TAGS } /* tags */, - { 0, 184, 2636, 2, 9, PL_MONG } /* ismongolian */, - { 1, 3129, 8192, 17, 4, PL_ADLM } /* scriptextensions=adlm */, - { 0, 7696, 3223, 6, 2, -PL_XPOSIXSPACE } /* wspace=n */, - { 3, 8376, 7265, 4, 7, PL_LB__LF } /* lb=linefeed */, - { 2, 8248, 17, 4, 1, PL_BPT__O } /* bpt=o */, - { 10, 7459, 7569, 3, 4, PL_OSMA } /* sc=osma */, - { 32, 6890, 6566, 4, 10, PL_BOXDRAWING } /* blk=boxdrawing */, - { 0, 8572, 7165, 3, 3, PL_WB__GAZ } /* wb=gaz */, - { 6, 8368, 0, 3, 0, PL_LAO } /* lao */, - { 1, 974, 8187, 24, 2, PL_CCC__27 } /* canonicalcombiningclass=27 */, - { 1, 47, 0, 1, 0, PL_M } /* m */, - { 0, 974, 8901, 27, 2, PL_CCC__36 } /* canonicalcombiningclass=ccc36 */, - { 5, 7478, 1312, 6, 7, PL_MC } /* isspacingmark */, - { 0, 7288, 7192, 7, 8, PL_SC__GUJR } /* script=gujarati */, - { 0, 7471, 3521, 7, 5, PL_POSIXSPACE } /* isposixspace */, - { 6, 8376, 7681, 3, 7, PL_LB__XX } /* lb=unknown */, - { 4, 7288, 8046, 7, 5, PL_SC__LIMB } /* script=limbu */, - { 0, 1426, 4539, 22, 15, PL_INSC__REGISTERSHIFTER } /* indicsyllabiccategory=registershifter */, - { 1, 2814, 0, 9, 0, PL_HALFMARKS } /* halfmarks */, - { 1, 7227, 7986, 5, 5, PL_POSIXBLANK } /* posixblank */, - { 0, 7288, 8388, 7, 4, PL_LISU } /* script=lisu */, - { 0, 4590, 7768, 2, 6, -PL_VS } /* vs=false */, - { 0, 7380, 8228, 4, 3, PL_CCC__202 } /* ccc=atb */, - { 0, 2229, 17, 17, 1, PL_LO } /* generalcategory=lo */, - { 1, 5968, 8067, 3, 4, PL_INORIYA } /* inoriya */, - { 0, 8240, 4730, 4, 13, PL_BC__EN } /* bc=europeannumber */, - { 2, 6484, 0, 10, 0, PL_IDC } /* idcontinue */, - { 1, 7136, 1790, 6, 22, PL_MODIFIERLETTERS } /* block=spacingmodifierletters */, - { 6, 7168, 7951, 8, 5, PL_EXT } /* extender=true */, - { 0, 6076, 7997, 11, 4, PL_BIDIC } /* bidicontrol=yes */, - { 0, 1306, 0, 24, 0, PL_DIACRITICALSFORSYMBOLS } /* combiningmarksforsymbols */, - { 1, 8376, 6087, 3, 11, PL_LB__BB } /* lb=breakbefore */, - { 8, 8340, 6726, 3, 10, PL_JG__REVERSEDPE } /* jg=reversedpe */, - { 6, 7288, 7336, 7, 4, PL_UGAR } /* script=ugar */, - { 1, 2229, 468, 16, 5, PL_P } /* generalcategory=punct */, - { 0, 4449, 47, 14, 1, PL_NFCQC__M } /* nfcquickcheck=m */, - { 10, 2149, 0, 20, 0, PL_HLUW } /* anatolianhieroglyphs */, - { 0, 8096, 6414, 5, 3, PL_BENG } /* scx=beng */, - { 0, 8412, 0, 4, 0, PL_MTEI } /* mtei */, - { 1, 2065, 7997, 21, 2, PL_NCHAR } /* noncharactercodepoint=y */, - { 16, 5051, 7997, 14, 2, PL_DT__NONE } /* nfkdquickcheck=y */, - { 0, 7816, 7997, 6, 4, PL_GRBASE } /* grbase=yes */, - { 0, 184, 2170, 3, 19, PL_PC } /* isconnectorpunctuation */, - { 4, 7226, 8081, 6, 5, PL_XPOSIXPRINT } /* xposixprint */, - { 19, 5645, 8804, 10, 3, PL_BC__LRI } /* bidiclass=lri */, - { 1, 7208, 0, 8, 0, PL_HIRA } /* hiragana */, - { 2, 7168, 7997, 8, 4, PL_EXT } /* extender=yes */, - { 1, 7, 0, 1, 0, PL_C } /* c */, - { 2, 4314, 5837, 13, 12, PL_JG__MALAYALAMBHA } /* joininggroup=malayalambha */, - { 0, 184, 8416, 2, 4, PL_MYMR } /* ismymr */, - { 7, 7380, 8897, 7, 2, PL_CCC__19 } /* ccc=ccc19 */, - { 1, 3129, 7025, 17, 9, PL_ORKH } /* scriptextensions=oldturkic */, - { 5, 8011, 4224, 3, 14, PL_SC } /* gc=currencysymbol */, - { 3, 4314, 3, 15, 1, PL_JG__KAF } /* joininggroup=kaf */, - { 20, 4554, 1083, 14, 2, PL_LB__LF } /* sentencebreak=lf */, - { 3, 6208, 3223, 5, 3, -PL_JOINC } /* joinc=no */, - { 2, 7136, 5531, 6, 13, PL_MISCTECHNICAL } /* block=misctechnical */, - { 2, 8121, 7997, 5, 2, PL_UIDEO } /* uideo=y */, - { 7, 7457, 2209, 5, 20, PL_INSC__CONSONANTWITHSTACKER } /* insc=consonantwithstacker */, - { 0, 184, 6587, 3, 9, PL_CJKSTROKES } /* iscjkstrokes */, - { 2, 184, 3754, 2, 16, PL_LINEARBIDEOGRAMS } /* islinearbideograms */, - { 0, 7136, 4105, 7, 4, PL_INBAMUM } /* block=bamum */, - { 0, 184, 5414, 2, 13, PL_LOWSURROGATES } /* islowsurrogates */, - { 2, 7689, 4091, 4, 13, PL_ARABICEXTA } /* isarabicextendeda */, - { 6, 7459, 5933, 3, 12, PL_GONM } /* sc=masaramgondi */, - { 0, 184, 283, 2, 33, PL_MISCMATHSYMBOLSA } /* ismiscellaneousmathematicalsymbolsa */, - { 0, 3129, 7653, 17, 7, PL_TIBT } /* scriptextensions=tibetan */, - { 2, 7380, 8646, 4, 2, PL_CCC__29 } /* ccc=29 */, - { 2, 6890, 5681, 4, 12, PL_CYRILLICEXTA } /* blk=cyrillicexta */, - { 0, 7840, 3521, 6, 5, PL_VERTSPACE } /* isvertspace */, - { 0, 8798, 3223, 3, 3, -PL_LOE } /* loe=no */, - { 0, 8204, 7768, 4, 2, -PL_POSIXXDIGIT } /* ahex=f */, - { 32, 7288, 8400, 7, 4, PL_MIAO } /* script=miao */, - { 5, 2985, 7768, 3, 6, -PL_IDS } /* ids=false */, - { 6, 7457, 5191, 7, 14, PL_INSC__INVISIBLESTACKER } /* insc=invisiblestacker */, - { 18, 6706, 8612, 10, 3, PL_IN__1_DOT_1 } /* presentin=1.1 */, - { 4, 184, 132, 2, 2, PL_LM } /* islm */, - { 2, 7288, 5427, 7, 9, PL_SC__MLYM } /* script=malayalam */, - { 26, 3129, 1589, 17, 5, PL_LATN } /* scriptextensions=latin */, - { 0, 7689, 2134, 3, 3, PL_POSIXXDIGIT } /* isahex */, - { 0, 8780, 7997, 3, 4, PL_CWT } /* cwt=yes */, - { 3, 6263, 7681, 10, 7, PL_LB__XX } /* linebreak=unknown */, - { 1, 5037, 0, 14, 0, PL_SK } /* modifiersymbol */, - { 0, 6890, 6980, 4, 9, PL_INNABATAEAN } /* blk=nabataean */, - { 4, 5245, 7768, 13, 2, -PL_POSIXXDIGIT } /* asciihexdigit=f */, - { 0, 34, 3581, 3, 2, PL_EXT } /* ext=t */, - { 1, 184, 691, 3, 29, PL_CUNEIFORMNUMBERS } /* iscuneiformnumbersandpunctuation */, - { 0, 184, 1499, 2, 1, PL_Z } /* isz */, - { 0, 6890, 7555, 4, 7, PL_OLCK } /* blk=olchiki */, - { 0, 7136, 6676, 6, 10, PL_INOLDPERSIAN } /* block=oldpersian */, - { 3, 6484, 7768, 10, 6, -PL_IDC } /* idcontinue=false */, - { 4, 3129, 2249, 17, 4, PL_GLAG } /* scriptextensions=glag */, - { 1, 6890, 7394, 4, 7, PL_CJKEXTB } /* blk=cjkextb */, - { 0, 7478, 7605, 3, 6, PL_SIDD } /* issiddham */, - { 0, 7136, 7604, 6, 7, PL_INSIDDHAM } /* block=siddham */, - { 5, 96, 7997, 10, 2, PL_XPOSIXALPHA } /* alphabetic=y */, - { 12, 8376, 8344, 3, 2, PL_GCB__T } /* lb=jt */, - { 8, 8480, 0, 4, 0, PL_QAAI } /* qaai */, - { 11, 982, 0, 2, 0, PL_L_AMP_ } /* lc */, - { 8, 7136, 4784, 6, 4, PL_INCHAM } /* block=cham */, - { 3, 4542, 3148, 3, 17, PL_TAIXUANJING } /* istaixuanjingsymbols */, - { 1, 7380, 7750, 4, 1, PL_CCC__8 } /* ccc=8 */, - { 1, 8196, 8867, 4, 3, PL_AGE__5_DOT_1 } /* age=v51 */, - { 0, 21, 3239, 4, 8, PL_ALCHEMICAL } /* inalchemical */, - { 2, 1448, 7062, 3, 8, PL_INSAMARITAN } /* insamaritan */, - { 1, 4224, 0, 14, 0, PL_SC } /* currencysymbol */, - { 1, 6210, 43, 3, 25, PL_CJKCOMPATIDEOGRAPHS } /* incjkcompatibilityideographs */, - { 1, 8011, 2088, 3, 2, PL_PD } /* gc=pd */, - { 1, 7288, 8596, 7, 4, PL_ZANB } /* script=zanb */, - { 0, 184, 2065, 2, 21, PL_NCHAR } /* isnoncharactercodepoint */, - { 1, 1426, 7981, 22, 5, PL_INSC__BINDU } /* indicsyllabiccategory=bindu */, - { 12, 7288, 4494, 7, 15, PL_NARB } /* script=oldnortharabian */, - { 1, 5657, 7997, 12, 4, PL_BIDIM } /* bidimirrored=yes */, - { 0, 7478, 6, 3, 1, PL_SD } /* issd */, - { 5, 7604, 0, 4, 0, PL_SIDD } /* sidd */, - { 3, 1202, 7951, 3, 5, PL_DEP } /* dep=true */, - { 0, 974, 226, 24, 2, PL_CCC__BL } /* canonicalcombiningclass=bl */, - { 4, 8096, 2877, 4, 10, PL_DEVA } /* scx=devanagari */, - { 0, 974, 7709, 24, 2, PL_CCC__16 } /* canonicalcombiningclass=16 */, - { 0, 8816, 7750, 3, 5, PL_NV__80000 } /* nv=80000 */, - { 8, 6890, 6786, 4, 10, PL_SUPARROWSC } /* blk=suparrowsc */, - { 2, 4402, 3851, 3, 15, PL_MISCMATHSYMBOLSA } /* inmiscmathsymbolsa */, - { 0, 5051, 7997, 14, 4, PL_DT__NONE } /* nfkdquickcheck=yes */, - { 0, 8376, 73, 3, 2, PL_LB__EM } /* lb=em */, - { 0, 8452, 0, 4, 0, PL_ORYA } /* orya */, - { 5, 5544, 7702, 13, 4, PL_NV__2000 } /* numericvalue=2000 */, - { 26, 5245, 3581, 13, 2, PL_POSIXXDIGIT } /* asciihexdigit=t */, - { 8, 8783, 7768, 3, 6, -PL_CWU } /* cwu=false */, - { 2, 4923, 5935, 4, 10, PL_INMASARAMGONDI } /* inmasaramgondi */, - { 0, 7136, 6863, 6, 9, PL_ARABICPFA } /* block=arabicpfa */, - { 42, 3129, 8516, 17, 4, PL_SGNW } /* scriptextensions=sgnw */, - { 0, 8332, 1614, 4, 21, PL_SHORTHANDFORMATCONTROLS } /* inshorthandformatcontrols */, - { 0, 7487, 3521, 5, 5, PL_XPOSIXSPACE } /* xperlspace */, - { 5, 6613, 3300, 3, 3, PL_HAN } /* ishani */, - { 4, 7136, 1282, 6, 10, PL_CJKSYMBOLS } /* block=cjksymbols */, - { 2, 2859, 4188, 18, 6, PL_DT__MED } /* decompositiontype=medial */, - { 2, 7136, 3994, 6, 9, PL_SYRIACSUP } /* block=syriacsup */, - { 1, 6706, 8876, 10, 3, PL_IN__6_DOT_1 } /* presentin=v61 */, - { 0, 21, 6944, 2, 9, PL_LATINEXTC } /* inlatinextc */, - { 1, 7288, 7, 7, 18, PL_CANS } /* script=canadianaboriginal */, - { 3, 6613, 8, 3, 2, PL_HAN } /* ishan */, - { 1, 8096, 4010, 4, 4, PL_TANG } /* scx=tang */, - { 0, 184, 1589, 2, 9, PL_LATINEXTE } /* islatinexte */, - { 1, 7136, 7401, 6, 7, PL_CJKEXTC } /* block=cjkextc */, - { 8, 2985, 7951, 3, 5, PL_IDS } /* ids=true */, - { 1, 8096, 2787, 4, 4, PL_CHER } /* scx=cher */, - { 0, 122, 7997, 9, 4, PL_DIA } /* diacritic=yes */, - { 0, 6890, 6626, 4, 10, PL_INKHAROSHTHI } /* blk=kharoshthi */, - { 0, 6890, 7822, 4, 6, PL_INHATRAN } /* blk=hatran */, - { 2, 7459, 7208, 3, 8, PL_SC__HIRA } /* sc=hiragana */, - { 0, 7136, 7639, 6, 7, PL_INTAITHAM } /* block=taitham */, - { 1, 84, 7768, 4, 2, -PL_MATH } /* math=f */, - { 24, 849, 0, 14, 0, PL_PUA } /* privateusearea */, - { 5, 7224, 6484, 3, 10, PL_XIDC } /* isxidcontinue */, - { 4, 5765, 3581, 12, 2, PL_GRBASE } /* graphemebase=t */, - { 0, 6890, 7450, 4, 7, PL_INHANUNOO } /* blk=hanunoo */, - { 4, 7136, 1543, 6, 23, PL_GEOMETRICSHAPESEXT } /* block=geometricshapesextended */, - { 0, 974, 8640, 24, 2, PL_CCC__18 } /* canonicalcombiningclass=18 */, - { 0, 5544, 8655, 13, 2, PL_NV__33 } /* numericvalue=33 */, - { 1, 6566, 0, 10, 0, PL_BOXDRAWING } /* boxdrawing */, - { 0, 8196, 8885, 4, 3, PL_AGE__7 } /* age=v70 */, - { 0, 6613, 2815, 3, 8, PL_HALFMARKS } /* ishalfmarks */, - { 6, 7288, 7152, 7, 4, PL_SC__DUPL } /* script=dupl */, - { 3, 1887, 3223, 5, 3, -PL_XPOSIXLOWER } /* lower=no */, - { 0, 8096, 7034, 4, 4, PL_PALM } /* scx=palm */, - { 2, 2108, 1379, 3, 23, PL_HIGHPUSURROGATES } /* inhighprivateusesurrogates */, - { 0, 8096, 2967, 4, 8, PL_GEOR } /* scx=georgian */, - { 69, 7506, 0, 7, 0, PL_LINA } /* lineara */, - { 0, 7689, 3596, 4, 14, PL_ARABICSUP } /* isarabicsupplement */, - { 0, 8816, 8172, 3, 4, PL_NV__3_SLASH_16 } /* nv=3/16 */, - { 1, 8096, 7208, 4, 8, PL_HIRA } /* scx=hiragana */, - { 0, 8376, 6175, 3, 11, PL_LB__EX } /* lb=exclamation */, - { 1, 8096, 2249, 4, 10, PL_GLAG } /* scx=glagolitic */, - { 1, 8780, 3223, 3, 3, -PL_CWT } /* cwt=no */, - { 2, 7380, 8901, 4, 2, PL_CCC__36 } /* ccc=36 */, - { 1, 6219, 7951, 11, 5, PL_JOINC } /* joincontrol=true */, - { 1, 8496, 0, 4, 0, PL_SAMR } /* samr */, - { 0, 6210, 691, 3, 15, PL_CUNEIFORMNUMBERS } /* incuneiformnumbers */, - { 2, 184, 661, 3, 29, PL_CJKEXTF } /* iscjkunifiedideographsextensionf */, - { 0, 1417, 5037, 9, 14, PL_SK } /* category=modifiersymbol */, - { 8, 2108, 1084, 5, 23, PL_HALFANDFULLFORMS } /* inhalfwidthandfullwidthforms */, - { 2, 184, 8348, 2, 4, PL_KALI } /* iskali */, - { 0, 21, 7900, 2, 6, PL_INREJANG } /* inrejang */, - { 2, 6890, 5336, 4, 8, PL_GREEKEXT } /* blk=greekext */, - { 3, 184, 2484, 2, 19, PL_EGYP } /* isegyptianhieroglyphs */, - { 3, 8026, 6686, 5, 10, PL_INPC__OVERSTRUCK } /* inpc=overstruck */, - { 11, 8276, 7951, 4, 5, PL_CWCM } /* cwcm=true */, - { 16, 6263, 2163, 10, 2, PL_LB__GL } /* linebreak=gl */, - { 0, 1448, 385, 5, 30, PL_SUPSYMBOLSANDPICTOGRAPHS } /* insupplementalsymbolsandpictographs */, - { 6, 8096, 7555, 4, 7, PL_OLCK } /* scx=olchiki */, - { 2, 6890, 808, 4, 28, PL_PHONETICEXTSUP } /* blk=phoneticextensionssupplement */, - { 4, 7459, 7429, 3, 7, PL_DSRT } /* sc=deseret */, - { 0, 21, 5388, 2, 13, PL_KANAEXTA } /* inkanaextendeda */, - { 1, 3129, 7660, 17, 4, PL_TIRH } /* scriptextensions=tirh */, - { 0, 8011, 1, 3, 1, PL_N } /* gc=n */, - { 1, 7136, 8116, 6, 5, PL_INTAMIL } /* block=tamil */, - { 4, 7918, 0, 4, 0, PL_THAA } /* thaa */, - { 5, 8061, 0, 5, 0, PL_OGAM } /* ogham */, - { 1, 3674, 0, 7, 0, PL_CPRT } /* cypriot */, - { 1, 7288, 8452, 7, 4, PL_SC__ORYA } /* script=orya */, - { 0, 7621, 0, 3, 0, PL_PUA } /* pua */, - { 5, 3129, 4299, 17, 15, PL_ARMI } /* scriptextensions=imperialaramaic */, - { 0, 4449, 7998, 14, 3, PL_NFCQC__Y } /* nfcquickcheck=yes */, - { 6, 8822, 3223, 3, 2, -PL_PCM } /* pcm=n */, - { 4, 7136, 3994, 6, 16, PL_SYRIACSUP } /* block=syriacsupplement */, - { 0, 3373, 6845, 15, 9, PL_EA__A } /* eastasianwidth=ambiguous */, - { 2, 184, 2877, 2, 13, PL_DEVANAGARIEXT } /* isdevanagariext */, - { 0, 7380, 18, 4, 1, PL_CCC__R } /* ccc=r */, - { 0, 6219, 7997, 11, 2, PL_JOINC } /* joincontrol=y */, - { 8, 6263, 8929, 10, 2, PL_GCB__V } /* linebreak=jv */, - { 1, 1691, 0, 11, 0, PL_NUMBERFORMS } /* numberforms */, - { 1, 8572, 4561, 3, 2, PL_WB__EB } /* wb=eb */, - { 2, 4314, 7930, 13, 6, PL_JG__YUDHHE } /* joininggroup=yudhhe */, - { 0, 8096, 5957, 4, 12, PL_MEND } /* scx=mendekikakui */, - { 0, 4554, 8935, 14, 2, PL_SB__XX } /* sentencebreak=xx */, - { 0, 3129, 4784, 17, 4, PL_CHAM } /* scriptextensions=cham */, - { 2, 3129, 8408, 17, 3, PL_MRO } /* scriptextensions=mro */, - { 0, 1746, 3985, 21, 9, PL_LB__EM } /* graphemeclusterbreak=emodifier */, - { 12, 1474, 17, 22, 1, PL_BPT__O } /* bidipairedbrackettype=o */, - { 5, 4923, 5429, 4, 7, PL_INMALAYALAM } /* inmalayalam */, - { 3, 1543, 0, 15, 0, PL_GEOMETRICSHAPES } /* geometricshapes */, - { 2, 3994, 0, 9, 0, PL_SYRIACSUP } /* syriacsup */, - { 1, 7380, 8916, 4, 2, PL_CCC__84 } /* ccc=84 */, - { 0, 1184, 7768, 25, 2, -PL_DI } /* defaultignorablecodepoint=f */, - { 0, 2985, 7997, 4, 4, PL_IDST } /* idst=yes */, - { 0, 7136, 2409, 7, 5, PL_INBRAHMI } /* block=brahmi */, - { 2, 8096, 2107, 4, 4, PL_SINH } /* scx=sinh */, - { 13, 6706, 8843, 10, 3, PL_IN__2 } /* presentin=v20 */, - { 1, 436, 0, 5, 0, PL_NCHAR } /* nchar */, - { 4, 2229, 8932, 17, 1, PL_L_AMP_ } /* generalcategory=l& */, - { 0, 8011, 5401, 3, 13, PL_ZL } /* gc=lineseparator */, - { 1, 4314, 3812, 13, 3, PL_JG__LAM } /* joininggroup=lam */, - { 1, 7459, 8444, 3, 4, PL_OLCK } /* sc=olck */, - { 0, 8096, 5427, 4, 9, PL_MLYM } /* scx=malayalam */, - { 6, 206, 0, 2, 0, PL_PI } /* pi */, - { 6, 7288, 2249, 7, 10, PL_SC__GLAG } /* script=glagolitic */, - { 5, 7136, 4284, 6, 15, PL_INHANGUL } /* block=hangulsyllables */, - { 4, 3129, 7780, 17, 6, PL_CARI } /* scriptextensions=carian */, - { 5, 2985, 7768, 4, 6, -PL_IDST } /* idst=false */, - { 28, 184, 8244, 2, 4, PL_BHKS } /* isbhks */, - { 14, 8816, 8771, 3, 3, PL_NV__9_SLASH_2 } /* nv=9/2 */, - { 0, 7459, 7604, 3, 4, PL_SIDD } /* sc=sidd */, - { 6, 1448, 3995, 3, 8, PL_SYRIACSUP } /* insyriacsup */, - { 10, 7906, 7847, 4, 5, PL_SC__KTHI } /* sc=kaithi */, - { 2, 4542, 7919, 3, 5, PL_THAA } /* isthaana */, - { 8, 7478, 7591, 3, 6, PL_SHRD } /* issharada */, - { 0, 7478, 7619, 3, 6, PL_SUPPUAA } /* issuppuaa */, - { 0, 8096, 4299, 4, 15, PL_ARMI } /* scx=imperialaramaic */, - { 1, 7288, 7660, 7, 4, PL_SC__TIRH } /* script=tirh */, - { 0, 7136, 0, 6, 34, PL_UCAS } /* block=unifiedcanadianaboriginalsyllabics */, - { 0, 2229, 1, 16, 1, PL_N } /* generalcategory=n */, - { 2, 7459, 7248, 3, 8, PL_SC__JAVA } /* sc=javanese */, - { 0, 6890, 6696, 4, 10, PL_INPHOENICIAN } /* blk=phoenician */, - { 0, 2229, 4569, 16, 15, PL_LT } /* generalcategory=titlecaseletter */, - { 5, 5544, 5219, 13, 11, PL_NV__10000000000 } /* numericvalue=10000000000 */, - { 7, 5284, 7768, 13, 6, -PL_CI } /* caseignorable=false */, - { 0, 184, 38, 2, 2, PL_XPOSIXDIGIT } /* isnd */, - { 0, 7459, 2484, 3, 4, PL_EGYP } /* sc=egyp */, - { 2, 2100, 8072, 3, 4, PL_OSGE } /* isosage */, - { 8, 184, 3340, 3, 16, PL_CYRILLICEXTB } /* iscyrillicextendedb */, - { 7, 1354, 7997, 24, 4, PL_COMPEX } /* fullcompositionexclusion=yes */, - { 0, 7136, 42, 6, 26, PL_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatibilityideographs */, - { 0, 6890, 1497, 4, 14, PL_BYZANTINEMUSIC } /* blk=byzantinemusic */, - { 0, 8101, 7997, 5, 4, PL_STERM } /* sterm=yes */, - { 0, 3129, 8111, 17, 4, PL_TAKR } /* scriptextensions=takr */, - { 0, 7288, 8520, 7, 4, PL_SHAW } /* script=shaw */, - { 0, 8816, 8160, 3, 2, PL_NV__13 } /* nv=13 */, - { 0, 6890, 510, 4, 30, PL_CJKEXTA } /* blk=cjkunifiedideographsextensiona */, - { 7, 8288, 1209, 3, 5, PL_DT__SUP } /* dt=super */, - { 6, 7459, 5825, 3, 4, PL_SC__MAHJ } /* sc=mahj */, - { 0, 7136, 4105, 7, 7, PL_BAMUMSUP } /* block=bamumsup */, - { 1, 6890, 7846, 4, 6, PL_INKAITHI } /* blk=kaithi */, - { 2, 8011, 221, 3, 2, PL_L_AMP_ } /* gc=l_ */, - { 2, 6210, 1982, 3, 7, PL_INCYRILLIC } /* incyrillic */, - { 1, 5192, 3425, 3, 3, PL_IDSB } /* isidsb */, - { 0, 7994, 0, 5, 0, PL_IDC } /* idc=y */, - { 11, 6890, 3356, 4, 17, PL_CYRILLICEXTC } /* blk=cyrillicextendedc */, - { 2, 7136, 4404, 6, 15, PL_INMEROITICCURSIVE } /* block=meroiticcursive */, - { 7, 8196, 7710, 4, 1, PL_AGE__6 } /* age=6 */, - { 1, 6890, 3850, 4, 16, PL_MISCMATHSYMBOLSA } /* blk=miscmathsymbolsa */, - { 10, 4923, 7274, 4, 6, PL_INMAHAJANI } /* inmahajani */, - { 9, 184, 2967, 2, 4, PL_GEOR } /* isgeor */, - { 0, 8011, 3914, 3, 16, PL_PO } /* gc=otherpunctuation */, - { 7, 8340, 8484, 3, 4, PL_JG__QAPH } /* jg=qaph */, - { 9, 7459, 2636, 3, 4, PL_SC__MONG } /* sc=mong */, - { 2, 4314, 3802, 13, 16, PL_JG__MANICHAEANLAMEDH } /* joininggroup=manichaeanlamedh */, - { 5, 21, 7870, 2, 6, PL_INLEPCHA } /* inlepcha */, - { 1, 2100, 7570, 3, 6, PL_OSMA } /* isosmanya */, - { 2, 7136, 3021, 6, 18, PL_LATINEXTADDITIONAL } /* block=latinextadditional */, - { 1, 7380, 8705, 4, 3, PL_CCC__IS } /* ccc=240 */, - { 10, 5645, 2655, 10, 19, PL_BC__RLO } /* bidiclass=righttoleftoverride */, - { 1, 6307, 0, 11, 0, PL_MYANMAREXTA } /* myanmarexta */, - { 1, 7459, 6736, 3, 4, PL_SAUR } /* sc=saur */, - { 1, 8011, 5037, 3, 14, PL_SK } /* gc=modifiersymbol */, - { 1, 8096, 3458, 4, 4, PL_MANI } /* scx=mani */, - { 1, 3656, 0, 18, 0, PL_PE } /* isclosepunctuation */, - { 2, 6472, 0, 11, 1, PL_WB__NU } /* wordbreak=nu */, - { 4, 7459, 78, 3, 4, PL_SC__ARAB } /* sc=arab */, - { 0, 184, 1307, 3, 23, PL_DIACRITICALSFORSYMBOLS } /* iscombiningmarksforsymbols */, - { 0, 7380, 8651, 7, 3, PL_CCC__132 } /* ccc=ccc132 */, - { 0, 8894, 3212, 3, 7, PL_VO__U } /* vo=upright */, - { 7, 8121, 0, 5, 0, PL_UIDEO } /* uideo */, - { 0, 184, 5957, 2, 12, PL_MEND } /* ismendekikakui */, - { 6, 7798, 0, 6, 0, PL_COMPEX } /* compex */, - { 0, 8240, 32, 3, 2, PL_BC__CS } /* bc=cs */, - { 0, 7226, 96, 6, 5, PL_XPOSIXALPHA } /* xposixalpha */, - { 2, 7459, 7660, 3, 4, PL_SC__TIRH } /* sc=tirh */, - { 1, 7288, 1401, 7, 4, PL_SC__SIND } /* script=sind */, - { 2, 184, 1543, 2, 18, PL_GEOMETRICSHAPESEXT } /* isgeometricshapesext */, - { 1, 6613, 3707, 3, 15, PL_HALFANDFULLFORMS } /* ishalfandfullforms */, - { 2, 6210, 4688, 3, 13, PL_CJKCOMPATFORMS } /* incjkcompatforms */, - { 4, 7136, 1812, 6, 22, PL_TRANSPORTANDMAP } /* block=transportandmapsymbols */, - { 2, 4134, 0, 15, 0, PL_BRAI } /* braillepatterns */, - { 0, 8196, 7750, 4, 1, PL_AGE__8 } /* age=8 */, - { 0, 184, 0, 4, 0, PL_CE } /* isce */, - { 4, 5192, 2986, 3, 3, PL_IDST } /* isidst */, - { 0, 7136, 808, 6, 28, PL_PHONETICEXTSUP } /* block=phoneticextensionssupplement */, - { 0, 8508, 3755, 4, 6, PL_SC__LINB } /* sc=linearb */, - { 17, 21, 1107, 2, 8, PL_INKATAKANA } /* inkatakana */, - { 1, 2236, 4330, 10, 14, PL_LL } /* category=lowercaseletter */, - { 1, 8196, 8849, 4, 3, PL_AGE__3 } /* age=v30 */, - { 2, 8096, 6005, 4, 12, PL_HUNG } /* scx=oldhungarian */, - { 3, 1160, 0, 4, 0, PL_HANG } /* hang */, - { 10, 8340, 5440, 3, 13, PL_JG__MALAYALAMNNNA } /* jg=malayalamnnna */, - { 5, 1918, 0, 21, 0, PL_CWU } /* changeswhenuppercased */, - { 4, 6296, 0, 11, 0, PL_MISCSYMBOLS } /* miscsymbols */, - { 3, 5134, 25, 3, 1, PL_PS } /* isps */, - { 0, 5079, 0, 14, 0, PL_MN } /* nonspacingmark */, - { 1, 122, 3223, 9, 2, -PL_DIA } /* diacritic=n */, - { 9, 5657, 7997, 5, 2, PL_BIDIM } /* bidim=y */, - { 0, 6890, 1506, 4, 14, PL_MUSIC } /* blk=musicalsymbols */, - { 0, 96, 3223, 10, 3, -PL_XPOSIXALPHA } /* alphabetic=no */, - { 2, 184, 2360, 2, 4, PL_MAND } /* ismand */, - { 27, 966, 0, 2, 0, PL_NO } /* no */, - { 0, 7136, 1107, 6, 8, PL_INKATAKANA } /* block=katakana */, - { 0, 6890, 1981, 4, 21, PL_CYRILLICSUP } /* blk=cyrillicsupplementary */, - { 10, 186, 0, 2, 0, PL_CE } /* ce */, - { 0, 7457, 5205, 5, 14, PL_INSC__VOWELDEPENDENT } /* insc=voweldependent */, - { 1, 1503, 721, 3, 29, PL_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumericsupplement */, - { 0, 7459, 2877, 3, 10, PL_SC__DEVA } /* sc=devanagari */, - { 16, 8340, 3786, 3, 16, PL_JG__MANICHAEANDALETH } /* jg=manichaeandaleth */, - { 2, 5134, 469, 3, 4, PL_P } /* ispunct */, - { 6, 6890, 78, 4, 6, PL_INARABIC } /* blk=arabic */, - { 0, 7459, 6806, 3, 10, PL_WARA } /* sc=warangciti */, - { 24, 184, 7986, 2, 5, PL_XPOSIXBLANK } /* isblank */, - { 0, 6890, 448, 5, 17, PL_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbols */, - { 0, 8816, 7720, 3, 3, PL_NV__400 } /* nv=400 */, - { 1, 6890, 7366, 4, 7, PL_INBENGALI } /* blk=bengali */, - { 0, 8340, 5921, 3, 12, PL_JG__MANICHAEANPE } /* jg=manichaeanpe */, - { 26, 8376, 34, 3, 2, PL_LB__EX } /* lb=ex */, - { 4, 21, 8388, 2, 4, PL_LISU } /* inlisu */, - { 1, 7894, 3223, 6, 2, -PL_PATSYN } /* patsyn=n */, - { 4, 6890, 8432, 4, 3, PL_INNKO } /* blk=nko */, - { 0, 2754, 923, 5, 24, PL_ALPHABETICPF } /* inalphabeticpresentationforms */, - { 0, 8816, 7936, 3, 4, PL_NV__1_SLASH_16 } /* nv=1/16 */, - { 1, 4314, 3458, 13, 17, PL_JG__MANICHAEANDHAMEDH } /* joininggroup=manichaeandhamedh */, - { 0, 8816, 7744, 3, 1, PL_NV__7 } /* nv=7 */, - { 2, 7288, 7436, 7, 4, PL_ELBA } /* script=elba */, - { 0, 4314, 8512, 13, 4, PL_JG__SEEN } /* joininggroup=seen */, - { 1, 2750, 7768, 4, 6, -PL_TERM } /* term=false */, - { 0, 8288, 3690, 3, 3, PL_DT__FIN } /* dt=fin */, - { 1, 7696, 7997, 6, 2, PL_XPOSIXSPACE } /* wspace=y */, - { 20, 3516, 3223, 10, 3, -PL_XPOSIXSPACE } /* whitespace=no */, - { 5, 1746, 3914, 21, 5, PL_GCB__XX } /* graphemeclusterbreak=other */, - { 2, 1417, 3914, 9, 5, PL_C } /* category=other */, - { 4, 7136, 720, 6, 21, PL_ENCLOSEDALPHANUM } /* block=enclosedalphanumerics */, - { 3, 122, 7768, 9, 6, -PL_DIA } /* diacritic=false */, - { 1, 7689, 2390, 3, 18, PL_ANCIENTGREEKNUMBERS } /* isancientgreeknumbers */, - { 0, 7136, 7992, 7, 4, PL_INBUHID } /* block=buhid */, - { 2, 5645, 7768, 5, 6, -PL_BIDIC } /* bidic=false */, - { 1, 6890, 7061, 4, 9, PL_INSAMARITAN } /* blk=samaritan */, - { 9, 6263, 5669, 10, 12, PL_LB__SY } /* linebreak=breaksymbols */, - { 0, 2859, 5969, 18, 8, PL_DT__NONCANON } /* decompositiontype=noncanon */, - { 1, 8196, 8708, 4, 3, PL_AGE__3 } /* age=3.0 */, - { 4, 8192, 0, 4, 0, PL_ADLM } /* adlm */, - { 0, 6613, 7209, 3, 7, PL_HIRA } /* ishiragana */, - { 0, 7986, 0, 5, 0, PL_XPOSIXBLANK } /* blank */, - { 16, 1897, 7997, 21, 4, PL_CWT } /* changeswhentitlecased=yes */, - { 1, 1402, 2355, 24, 14, PL_INPC__BOTTOMANDRIGHT } /* indicpositionalcategory=bottomandright */, - { 2, 6109, 7, 10, 1, PL_XPOSIXCNTRL } /* category=cc */, - { 2, 7136, 2787, 6, 8, PL_INCHEROKEE } /* block=cherokee */, - { 2, 8528, 0, 4, 0, PL_SYRC } /* syrc */, - { 5, 5657, 3223, 12, 2, -PL_BIDIM } /* bidimirrored=n */, - { 13, 3129, 8384, 17, 4, PL_LINB } /* scriptextensions=linb */, - { 1, 6706, 8861, 10, 3, PL_IN__4_DOT_1 } /* presentin=v41 */, - { 4, 5544, 7744, 13, 1, PL_NV__7 } /* numericvalue=7 */, - { 4, 8816, 7756, 3, 1, PL_NV__9 } /* nv=9 */, - { 3, 1448, 3544, 3, 16, PL_SMALLFORMS } /* insmallformvariants */, - { 0, 1908, 0, 9, 0, PL_LT } /* titlecase */, - { 6, 7459, 8111, 3, 4, PL_SC__TAKR } /* sc=takr */, - { 1, 8240, 3075, 3, 18, PL_BC__B } /* bc=paragraphseparator */, - { 0, 184, 7876, 2, 4, PL_LYCI } /* islyci */, - { 5, 6890, 2967, 4, 8, PL_INGEORGIAN } /* blk=georgian */, - { 5, 184, 5657, 2, 12, PL_BIDIM } /* isbidimirrored */, - { 0, 6208, 7768, 5, 2, -PL_JOINC } /* joinc=f */, - { 1, 7288, 7152, 7, 8, PL_SC__DUPL } /* script=duployan */, - { 0, 4198, 1545, 4, 16, PL_GEOMETRICSHAPESEXT } /* ingeometricshapesext */, - { 0, 8276, 3581, 4, 2, PL_CWCM } /* cwcm=t */, - { 2, 5645, 5633, 10, 12, PL_BC__AN } /* bidiclass=arabicnumber */, - { 15, 1206, 7919, 3, 5, PL_INTHAANA } /* inthaana */, - { 5, 6890, 2841, 4, 18, PL_COPTICEPACTNUMBERS } /* blk=copticepactnumbers */, - { 19, 6241, 0, 11, 0, PL_KATAKANAEXT } /* katakanaext */, - { 0, 7288, 4135, 8, 6, PL_BRAI } /* script=braille */, - { 36, 8340, 5837, 3, 12, PL_JG__MALAYALAMBHA } /* jg=malayalambha */, - { 0, 1209, 0, 25, 0, PL_SUPERANDSUB } /* superscriptsandsubscripts */, - { 4, 6890, 4269, 4, 15, PL_DIACRITICALSSUP } /* blk=diacriticalssup */, - { 1, 8011, 45, 3, 2, PL_CO } /* gc=co */, - { 1, 436, 3581, 5, 2, PL_NCHAR } /* nchar=t */, - { 2, 3129, 2841, 17, 4, PL_COPT } /* scriptextensions=copt */, - { 0, 1417, 8939, 9, 2, PL_ZP } /* category=zp */, - { 0, 8196, 8891, 4, 3, PL_AGE__9 } /* age=v90 */, - { 7, 7136, 6746, 6, 10, PL_SMALLFORMS } /* block=smallforms */, - { 17, 8816, 7726, 3, 2, PL_NV__43 } /* nv=43 */, - { 5, 4784, 0, 4, 0, PL_CHAM } /* cham */, - { 1, 7136, 2787, 6, 18, PL_CHEROKEESUP } /* block=cherokeesupplement */, - { 2, 8894, 3194, 3, 7, PL_VO__R } /* vo=rotated */, - { 0, 6483, 7951, 11, 5, PL_XIDC } /* xidcontinue=true */, - { 0, 7459, 2598, 3, 19, PL_MERO } /* sc=meroitichieroglyphs */, - { 11, 5544, 8911, 13, 2, PL_NV__46 } /* numericvalue=46 */, - { 1, 5544, 8621, 13, 3, PL_NV__1_SLASH_6 } /* numericvalue=1/6 */, - { 0, 3373, 4127, 15, 7, PL_EA__N } /* eastasianwidth=neutral */, - { 0, 184, 6076, 2, 11, PL_BIDIC } /* isbidicontrol */, - { 1, 8516, 0, 4, 0, PL_SGNW } /* sgnw */, - { 0, 7380, 8688, 7, 2, PL_CCC__26 } /* ccc=ccc26 */, - { 4, 2990, 80, 4, 8, PL_ARABICMATH } /* inarabicmath */, - { 7, 8340, 8334, 3, 4, PL_JG__SHIN } /* jg=shin */, - { 35, 6263, 1479, 10, 2, PL_LB__AI } /* linebreak=ai */, - { 0, 6890, 6029, 4, 12, PL_PHAISTOS } /* blk=phaistosdisc */, - { 20, 7380, 7944, 4, 2, PL_CCC__12 } /* ccc=12 */, - { 0, 1892, 7768, 5, 2, -PL_CASED } /* cased=f */, - { 2, 1589, 0, 5, 0, PL_LATN } /* latin */, - { 1, 7828, 3223, 6, 3, -PL_HYPHEN } /* hyphen=no */, - { 0, 6329, 7088, 11, 8, PL_XPOSIXDIGIT } /* numerictype=decimal */, - { 1, 4464, 7996, 4, 5, PL_NFDQC__Y } /* nfdqc=yes */, - { 0, 1282, 0, 10, 0, PL_CJKSYMBOLS } /* cjksymbols */, - { 1, 6208, 3581, 5, 2, PL_JOINC } /* joinc=t */, - { 3, 6263, 73, 10, 2, PL_LB__EM } /* linebreak=em */, - { 7, 8096, 8352, 4, 4, PL_KHMR } /* scx=khmr */, - { 1, 8026, 5122, 3, 13, PL_INPSALTERPAHLAVI } /* inpsalterpahlavi */, - { 1, 974, 8693, 24, 3, PL_CCC__A } /* canonicalcombiningclass=230 */, - { 3, 7224, 1929, 8, 5, PL_XPOSIXUPPER } /* isxposixupper */, - { 0, 1448, 6747, 3, 9, PL_SMALLFORMS } /* insmallforms */, - { 35, 5968, 7008, 3, 8, PL_INOLDITALIC } /* inolditalic */, - { 0, 4314, 8484, 13, 4, PL_JG__QAPH } /* joininggroup=qaph */, - { 0, 184, 8412, 2, 4, PL_MTEI } /* ismtei */, - { 2, 7459, 7104, 3, 8, PL_SC__ARMN } /* sc=armenian */, - { 8, 8096, 4010, 4, 6, PL_TANG } /* scx=tangut */, - { 5, 8572, 138, 3, 2, PL_WB__FO } /* wb=fo */, - { 2, 5968, 6677, 3, 9, PL_INOLDPERSIAN } /* inoldpersian */, - { 18, 8196, 6796, 4, 10, PL_AGE__NA } /* age=unassigned */, - { 0, 8026, 7584, 3, 6, PL_INPHAGSPA } /* inphagspa */, - { 0, 8196, 8840, 4, 3, PL_IN__1_DOT_1 } /* age=v11 */, - { 5, 184, 698, 2, 2, PL_MN } /* ismn */, - { 0, 7555, 0, 7, 0, PL_OLCK } /* olchiki */, - { 6, 7459, 7, 3, 18, PL_CANS } /* sc=canadianaboriginal */, - { 10, 6890, 7639, 4, 7, PL_INTAITHAM } /* blk=taitham */, - { 0, 8376, 83, 3, 2, PL_LB__CM } /* lb=cm */, - { 3, 1426, 4164, 22, 15, PL_INSC__CONSONANTKILLER } /* indicsyllabiccategory=consonantkiller */, - { 52, 8816, 7732, 3, 3, PL_NV__500 } /* nv=500 */, - { 3, 8340, 5065, 3, 14, PL_JG__NOJOININGGROUP } /* jg=nojoininggroup */, - { 0, 184, 7416, 3, 6, PL_CJKEXTE } /* iscjkexte */, - { 0, 8240, 4119, 3, 15, PL_BC__BN } /* bc=boundaryneutral */, - { 12, 2859, 568, 18, 2, PL_DT__NB } /* decompositiontype=nb */, - { 7, 6263, 7828, 10, 2, PL_LB__HY } /* linebreak=hy */, - { 3, 6890, 42, 4, 16, PL_CJKCOMPAT } /* blk=cjkcompatibility */, - { 0, 21, 4660, 3, 13, PL_ANCIENTSYMBOLS } /* inancientsymbols */, - { 3, 8777, 3223, 3, 3, -PL_CWL } /* cwl=no */, - { 0, 8096, 8544, 4, 4, PL_TAVT } /* scx=tavt */, - { 1, 8276, 7768, 4, 6, -PL_CWCM } /* cwcm=false */, - { 0, 974, 8916, 24, 2, PL_CCC__84 } /* canonicalcombiningclass=84 */, - { 0, 7136, 7145, 7, 7, PL_INBUGINESE } /* block=buginese */, - { 3, 7136, 7583, 6, 7, PL_INPHAGSPA } /* block=phagspa */, - { 3, 7380, 7727, 7, 2, PL_CCC__32 } /* ccc=ccc32 */, - { 0, 7380, 1108, 4, 3, PL_CCC__214 } /* ccc=ata */, - { 4, 8248, 1, 4, 1, PL_BPT__N } /* bpt=n */, - { 4, 1474, 723, 23, 4, PL_BPT__C } /* bidipairedbrackettype=close */, - { 4, 8196, 8735, 4, 3, PL_AGE__5_DOT_1 } /* age=5.1 */, - { 18, 1887, 3223, 9, 2, -PL_XPOSIXLOWER } /* lowercase=n */, - { 7, 5192, 247, 3, 2, PL_IDS } /* isids */, - { 8, 3129, 2044, 17, 11, PL_MTEI } /* scriptextensions=meeteimayek */, - { 0, 6362, 0, 11, 0, PL_SO } /* othersymbol */, - { 3, 974, 8899, 27, 2, PL_CCC__35 } /* canonicalcombiningclass=ccc35 */, - { 2, 1, 0, 1, 0, PL_N } /* n */, - { 0, 6263, 5777, 10, 12, PL_LB__HL } /* linebreak=hebrewletter */, - { 1, 8096, 7604, 4, 4, PL_SIDD } /* scx=sidd */, - { 0, 6890, 7780, 4, 6, PL_INCARIAN } /* blk=carian */, - { 0, 7336, 0, 8, 0, PL_UGAR } /* ugaritic */, - { 9, 76, 7762, 2, 3, PL_NT__DI } /* nt=di */, - { 0, 8240, 3446, 3, 3, PL_BC__RLI } /* bc=rli */, - { 1, 8026, 850, 3, 13, PL_PUA } /* inprivateusearea */, - { 0, 3526, 7997, 17, 2, PL_RI } /* regionalindicator=y */, - { 0, 2859, 45, 18, 6, PL_DT__COM } /* decompositiontype=compat */, - { 14, 8816, 7744, 3, 4, PL_NV__7000 } /* nv=7000 */, - { 0, 1963, 3223, 7, 3, -PL_RADICAL } /* radical=no */, - { 1, 184, 8308, 2, 4, PL_GURU } /* isguru */, - { 1, 8011, 107, 4, 5, PL_S } /* gc=symbol */, - { 6, 2859, 3690, 18, 3, PL_DT__FIN } /* decompositiontype=fin */, - { 2, 6613, 5778, 3, 5, PL_HEBR } /* ishebrew */, - { 0, 8076, 0, 5, 0, PL_PATWS } /* patws */, - { 4, 184, 1982, 3, 7, PL_CYRL } /* iscyrillic */, - { 2, 1417, 8937, 9, 2, PL_ZL } /* category=zl */, - { 0, 2877, 0, 13, 0, PL_DEVANAGARIEXT } /* devanagariext */, - { 5, 2044, 0, 11, 0, PL_MTEI } /* meeteimayek */, - { 0, 7674, 0, 7, 0, PL_UCASEXT } /* ucasext */, - { 9, 184, 7144, 2, 4, PL_BUGI } /* isbugi */, - { 10, 5051, 8256, 5, 4, PL_NFKDQC__N } /* nfkdqc=no */, - { 0, 8096, 7436, 4, 7, PL_ELBA } /* scx=elbasan */, - { 0, 7288, 8444, 7, 4, PL_OLCK } /* script=olck */, - { 3, 6890, 148, 4, 35, PL_DIACRITICALSSUP } /* blk=combiningdiacriticalmarkssupplement */, - { 2, 6890, 8046, 4, 5, PL_INLIMBU } /* blk=limbu */, - { 1, 1417, 6340, 9, 11, PL_LO } /* category=otherletter */, - { 1, 7459, 6989, 3, 9, PL_TALU } /* sc=newtailue */, - { 4, 7288, 4509, 7, 15, PL_SARB } /* script=oldsoutharabian */, - { 1, 8288, 7216, 3, 8, PL_DT__ISO } /* dt=isolated */, - { 1, 184, 7816, 2, 6, PL_GRBASE } /* isgrbase */, - { 0, 7457, 6716, 5, 10, PL_INSC__PUREKILLER } /* insc=purekiller */, - { 2, 1346, 5339, 5, 10, PL_GREEKEXT } /* ingreekextended */, - { 0, 3129, 6439, 17, 11, PL_SYLO } /* scriptextensions=sylotinagri */, - { 3, 7457, 2446, 5, 19, PL_INSC__CONSONANTHEADLETTER } /* insc=consonantheadletter */, - { 2, 4314, 5440, 13, 13, PL_JG__MALAYALAMNNNA } /* joininggroup=malayalamnnna */, - { 0, 4590, 3223, 2, 3, -PL_VS } /* vs=no */, - { 0, 7136, 808, 6, 18, PL_PHONETICEXT } /* block=phoneticextensions */, - { 10, 8096, 8500, 4, 4, PL_SARB } /* scx=sarb */, - { 37, 4599, 0, 15, 0, PL_LU } /* uppercaseletter */, - { 1, 6472, 34, 10, 6, PL_WB__EXTEND } /* wordbreak=extend */, - { 0, 7136, 4509, 6, 15, PL_SARB } /* block=oldsoutharabian */, - { 4, 2967, 0, 8, 0, PL_GEOR } /* georgian */, - { 1, 7136, 2128, 6, 6, PL_YIJING } /* block=yijing */, - { 0, 3129, 7870, 17, 4, PL_LEPC } /* scriptextensions=lepc */, - { 0, 5645, 23, 10, 2, PL_BC__AL } /* bidiclass=al */, - { 0, 1159, 3581, 25, 2, PL_CWKCF } /* changeswhennfkccasefolded=t */, - { 0, 3129, 7870, 17, 6, PL_LEPC } /* scriptextensions=lepcha */, - { 9, 8536, 0, 4, 0, PL_TALU } /* talu */, - { 5, 2369, 0, 20, 1, PL_VO__U } /* verticalorientation=u */, - { 4, 974, 8688, 24, 2, PL_CCC__26 } /* canonicalcombiningclass=26 */, - { 0, 5765, 7997, 12, 2, PL_GRBASE } /* graphemebase=y */, - { 4, 8798, 3581, 3, 2, PL_LOE } /* loe=t */, - { 1, 6890, 6005, 4, 12, PL_INOLDHUNGARIAN } /* blk=oldhungarian */, - { 5, 6890, 4104, 4, 8, PL_BAMUMSUP } /* blk=bamumsup */, - { 1, 2108, 7452, 4, 5, PL_INHANUNOO } /* inhanunoo */, - { 0, 8937, 0, 2, 0, PL_ZL } /* zl */, - { 1, 7136, 6029, 6, 12, PL_PHAISTOS } /* block=phaistosdisc */, - { 3, 7288, 5933, 7, 12, PL_GONM } /* script=masaramgondi */, - { 1, 8340, 8392, 3, 4, PL_JG__MEEM } /* jg=meem */, - { 0, 4314, 8131, 13, 5, PL_JG__ZHAIN } /* joininggroup=zhain */, - { 2, 2236, 8932, 10, 1, PL_L_AMP_ } /* category=l& */, - { 2, 7590, 0, 7, 0, PL_SHRD } /* sharada */, - { 2, 7136, 6882, 7, 8, PL_INBHAIKSUKI } /* block=bhaiksuki */, - { 2, 2100, 6363, 3, 10, PL_SO } /* isothersymbol */, - { 1, 7478, 2108, 3, 3, PL_SINH } /* issinh */, - { 0, 5544, 8148, 13, 4, PL_NV__1_SLASH_40 } /* numericvalue=1/40 */, - { 0, 7288, 7061, 7, 9, PL_SAMR } /* script=samaritan */, - { 0, 8096, 8528, 4, 4, PL_SYRC } /* scx=syrc */, - { 1, 6263, 223, 10, 2, PL_LB__PR } /* linebreak=pr */, - { 0, 8572, 3914, 3, 5, PL_WB__XX } /* wb=other */, - { 3, 1797, 0, 14, 0, PL_LM } /* modifierletter */, - { 5, 7457, 7981, 5, 5, PL_INSC__BINDU } /* insc=bindu */, - { 0, 8101, 7768, 5, 6, -PL_STERM } /* sterm=false */, - { 12, 7478, 6757, 3, 9, PL_SD } /* issoftdotted */, - { 0, 3129, 7351, 17, 4, PL_TALE } /* scriptextensions=tale */, - { 3, 42, 0, 36, 0, PL_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatibilityideographssupplement */, - { 5, 8816, 8703, 3, 2, PL_NV__34 } /* nv=34 */, - { 0, 3526, 0, 17, 0, PL_RI } /* regionalindicator */, - { 1, 7380, 7756, 4, 1, PL_CCC__9 } /* ccc=9 */, - { 0, 1417, 218, 9, 2, PL_PE } /* category=pe */, - { 0, 8121, 3223, 5, 2, -PL_UIDEO } /* uideo=n */, - { 8, 415, 7997, 11, 4, PL_IDEO } /* ideographic=yes */, - { 1, 6890, 1001, 4, 27, PL_ENCLOSEDCJK } /* blk=enclosedcjklettersandmonths */, - { 8, 3129, 8488, 17, 4, PL_RJNG } /* scriptextensions=rjng */, - { 0, 6329, 7096, 11, 3, PL_NT__NU } /* numerictype=nu */, - { 0, 4542, 8117, 3, 4, PL_TAML } /* istamil */, - { 2, 184, 1961, 3, 13, PL_CJKRADICALSSUP } /* iscjkradicalssup */, - { 1, 8196, 8864, 4, 3, PL_AGE__5 } /* age=v50 */, - { 64, 96, 7997, 5, 4, PL_XPOSIXALPHA } /* alpha=yes */, - { 11, 8340, 2437, 3, 3, PL_JG__YEH } /* jg=yeh */, - { 0, 7136, 7858, 6, 6, PL_INKHOJKI } /* block=khojki */, - { 0, 8340, 1353, 4, 2, PL_JG__GAF } /* jg=gaf */, - { 0, 8816, 8762, 3, 3, PL_NV__7_SLASH_8 } /* nv=7/8 */, - { 0, 7288, 7429, 7, 7, PL_DSRT } /* script=deseret */, - { 0, 8816, 8184, 3, 4, PL_NV__5_SLASH_12 } /* nv=5/12 */, - { 0, 6210, 1961, 3, 20, PL_CJKRADICALSSUP } /* incjkradicalssupplement */, - { 15, 1701, 3223, 2, 3, -PL_SD } /* sd=no */, - { 4, 8272, 7997, 4, 4, PL_CWCF } /* cwcf=yes */, - { 0, 974, 8168, 24, 2, PL_CCC__17 } /* canonicalcombiningclass=17 */, - { 0, 7288, 2149, 7, 20, PL_HLUW } /* script=anatolianhieroglyphs */, - { 26, 7288, 8192, 7, 4, PL_SC__ADLM } /* script=adlm */, - { 10, 8376, 3521, 3, 5, PL_LB__SP } /* lb=space */, - { 0, 184, 7200, 2, 8, PL_GURU } /* isgurmukhi */, - { 4, 8011, 8931, 3, 2, PL_L_AMP_ } /* gc=l& */, - { 9, 8096, 5400, 5, 7, PL_BALI } /* scx=balinese */, - { 3, 7459, 5957, 3, 4, PL_MEND } /* sc=mend */, - { 1, 3129, 8220, 17, 4, PL_ARMN } /* scriptextensions=armn */, - { 0, 6890, 5596, 4, 13, PL_VERTICALFORMS } /* blk=verticalforms */, - { 8, 6219, 7768, 11, 2, -PL_JOINC } /* joincontrol=f */, - { 2, 6890, 382, 4, 33, PL_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supplementalsymbolsandpictographs */, - { 1, 974, 7941, 27, 2, PL_CCC__11 } /* canonicalcombiningclass=ccc11 */, - { 0, 7227, 62, 5, 5, PL_POSIXGRAPH } /* posixgraph */, - { 0, 5245, 7768, 13, 6, -PL_POSIXXDIGIT } /* asciihexdigit=false */, - { 0, 184, 6953, 2, 9, PL_LATINEXTD } /* islatinextd */, - { 26, 6329, 7762, 11, 3, PL_NT__DI } /* numerictype=di */, - { 1, 6706, 8873, 10, 3, PL_IN__6 } /* presentin=v60 */, - { 1, 1206, 1813, 3, 14, PL_TRANSPORTANDMAP } /* intransportandmap */, - { 14, 7459, 8236, 3, 4, PL_BATK } /* sc=batk */, - { 0, 5544, 5219, 13, 6, PL_NV__100000 } /* numericvalue=100000 */, - { 10, 2229, 3003, 16, 18, PL_PI } /* generalcategory=initialpunctuation */, - { 7, 7288, 3458, 7, 10, PL_SC__MANI } /* script=manichaean */, - { 0, 8376, 1886, 3, 2, PL_LB__NL } /* lb=nl */, - { 0, 8340, 4911, 3, 14, PL_JG__MANICHAEANAYIN } /* jg=manichaeanayin */, - { 0, 7136, 7394, 6, 7, PL_CJKEXTB } /* block=cjkextb */, - { 0, 8204, 7997, 4, 2, PL_POSIXXDIGIT } /* ahex=y */, - { 0, 7288, 6626, 7, 10, PL_KHAR } /* script=kharoshthi */, - { 0, 3129, 4104, 17, 4, PL_BAMU } /* scriptextensions=bamu */, - { 5, 7478, 6440, 3, 3, PL_SYLO } /* issylo */, - { 0, 7288, 7034, 7, 4, PL_PALM } /* script=palm */, - { 3, 8011, 7, 3, 1, PL_C } /* gc=c */, - { 0, 7459, 8416, 3, 4, PL_SC__MYMR } /* sc=mymr */, - { 17, 6890, 1234, 4, 24, PL_ARABICPFA } /* blk=arabicpresentationformsa */, - { 1, 8021, 3223, 5, 3, -PL_GREXT } /* grext=no */, - { 1, 7457, 4058, 5, 16, PL_INSC__VOWELINDEPENDENT } /* insc=vowelindependent */, - { 8, 7459, 7810, 3, 4, PL_GOTH } /* sc=goth */, - { 0, 7459, 7312, 3, 8, PL_SC__TAGB } /* sc=tagbanwa */, - { 0, 8196, 8768, 4, 3, PL_AGE__9 } /* age=9.0 */, - { 65, 2065, 7997, 21, 4, PL_NCHAR } /* noncharactercodepoint=yes */, - { 0, 6219, 3581, 11, 2, PL_JOINC } /* joincontrol=t */, - { 7, 2023, 0, 21, 0, PL_LOE } /* logicalorderexception */, - { 2, 5544, 8703, 13, 2, PL_NV__34 } /* numericvalue=34 */, - { 0, 8196, 8612, 4, 3, PL_IN__1_DOT_1 } /* age=1.1 */, - { 0, 117, 448, 3, 17, PL_IDEOGRAPHICSYMBOLS } /* inideographicsymbols */, - { 5, 8096, 5957, 4, 4, PL_MEND } /* scx=mend */, - { 2, 6706, 8735, 10, 3, PL_IN__5_DOT_1 } /* presentin=5.1 */, - { 1, 7459, 7152, 3, 8, PL_SC__DUPL } /* sc=duployan */, - { 0, 3129, 7010, 17, 4, PL_ITAL } /* scriptextensions=ital */, - { 2, 1426, 5205, 22, 14, PL_INSC__VOWELDEPENDENT } /* indicsyllabiccategory=voweldependent */, - { 7, 5544, 7744, 13, 6, PL_NV__700000 } /* numericvalue=700000 */, - { 7, 974, 2590, 24, 2, PL_CCC__1 } /* canonicalcombiningclass=ov */, - { 13, 7224, 2985, 3, 3, PL_XIDS } /* isxids */, - { 0, 3129, 7208, 17, 4, PL_HIRA } /* scriptextensions=hira */, - { 0, 974, 8897, 24, 2, PL_CCC__19 } /* canonicalcombiningclass=19 */, - { 6, 7459, 7336, 3, 8, PL_UGAR } /* sc=ugaritic */, - { 7, 4479, 7373, 5, 7, PL_NFCQC__M } /* nfkcqc=maybe */, - { 0, 1929, 3223, 9, 3, -PL_XPOSIXUPPER } /* uppercase=no */, - { 3, 3129, 7366, 17, 7, PL_BENG } /* scriptextensions=bengali */, - { 0, 7380, 8899, 4, 2, PL_CCC__35 } /* ccc=35 */, - { 0, 4524, 0, 15, 0, PL_PS } /* openpunctuation */, - { 0, 5957, 0, 12, 0, PL_MEND } /* mendekikakui */, - { 0, 8340, 7961, 3, 5, PL_JG__ALAPH } /* jg=alaph */, - { 0, 3037, 0, 3, 0, PL_ALL } /* all */, - { 0, 974, 8633, 24, 3, PL_CCC__103 } /* canonicalcombiningclass=103 */, - { 0, 1566, 0, 6, 0, PL_HANG } /* hangul */, - { 2, 6472, 698, 10, 2, PL_WB__MN } /* wordbreak=mn */, - { 2, 3129, 6696, 17, 10, PL_PHNX } /* scriptextensions=phoenician */, - { 7, 974, 8639, 27, 3, PL_CCC__118 } /* canonicalcombiningclass=ccc118 */, - { 0, 6484, 3581, 10, 2, PL_IDC } /* idcontinue=t */, - { 39, 4010, 0, 16, 0, PL_TANGUTCOMPONENTS } /* tangutcomponents */, - { 2, 8376, 4897, 3, 14, PL_LB__BK } /* lb=mandatorybreak */, - { 2, 7136, 7312, 6, 8, PL_INTAGBANWA } /* block=tagbanwa */, - { 0, 5245, 0, 13, 0, PL_POSIXXDIGIT } /* asciihexdigit */, - { 4, 4554, 69, 14, 2, PL_SB__UP } /* sentencebreak=up */, - { 0, 2229, 112, 16, 2, PL_SC } /* generalcategory=sc */, - { 0, 3129, 6439, 17, 4, PL_SYLO } /* scriptextensions=sylo */, - { 2, 184, 6806, 2, 4, PL_WARA } /* iswara */, - { 0, 5375, 6165, 13, 10, PL_JT__D } /* joiningtype=dualjoining */, - { 3, 250, 0, 33, 0, PL_DIACRITICALSEXT } /* combiningdiacriticalmarksextended */, - { 4, 184, 5645, 2, 5, PL_BIDIC } /* isbidic */, - { 4, 8340, 6526, 3, 10, PL_JG__AFRICANQAF } /* jg=africanqaf */, - { 3, 2088, 0, 2, 0, PL_PD } /* pd */, - { 1, 8336, 7662, 4, 5, PL_INTIRHUTA } /* intirhuta */, - { 0, 6890, 3147, 4, 18, PL_TAIXUANJING } /* blk=taixuanjingsymbols */, - { 3, 7894, 7951, 6, 5, PL_PATSYN } /* patsyn=true */, - { 41, 1448, 3562, 4, 15, PL_SUTTONSIGNWRITING } /* insuttonsignwriting */, - { 6, 6890, 808, 4, 11, PL_PHONETICEXT } /* blk=phoneticext */, - { 2, 184, 2044, 2, 21, PL_MEETEIMAYEKEXT } /* ismeeteimayekextensions */, - { 0, 7660, 0, 7, 0, PL_TIRH } /* tirhuta */, - { 13, 6647, 3290, 4, 15, PL_AGHB } /* iscaucasianalbanian */, - { 1, 6890, 1691, 4, 11, PL_NUMBERFORMS } /* blk=numberforms */, - { 0, 2229, 5135, 16, 14, PL_ZS } /* generalcategory=spaceseparator */, - { 2, 184, 2484, 2, 4, PL_EGYP } /* isegyp */, - { 1, 4314, 5492, 13, 13, PL_JG__MANICHAEANTAW } /* joininggroup=manichaeantaw */, - { 0, 7136, 4419, 6, 15, PL_MISCPICTOGRAPHS } /* block=miscpictographs */, - { 1, 1918, 7768, 21, 2, -PL_CWU } /* changeswhenuppercased=f */, - { 0, 3129, 6736, 17, 10, PL_SAUR } /* scriptextensions=saurashtra */, - { 4, 7380, 226, 4, 2, PL_CCC__BL } /* ccc=bl */, - { 2, 2229, 7, 16, 1, PL_C } /* generalcategory=c */, - { 1, 7288, 7882, 7, 4, PL_LYDI } /* script=lydi */, - { 0, 8508, 7883, 4, 3, PL_LYDI } /* sc=lydi */, - { 54, 8096, 8260, 4, 4, PL_CAKM } /* scx=cakm */, - { 1, 7457, 1520, 5, 23, PL_INSC__CONSONANTPRECEDINGREPHA } /* insc=consonantprecedingrepha */, - { 18, 6373, 0, 11, 0, PL_HMNG } /* pahawhhmong */, - { 0, 8340, 3802, 3, 16, PL_JG__MANICHAEANLAMEDH } /* jg=manichaeanlamedh */, - { 24, 8240, 16, 3, 1, PL_BC__B } /* bc=b */, - { 0, 7288, 7918, 7, 6, PL_SC__THAA } /* script=thaana */, - { 5, 6890, 4855, 4, 14, PL_LATINEXTC } /* blk=latinextendedc */, - { 0, 2108, 4800, 3, 13, PL_HIGHSURROGATES } /* inhighsurrogates */, - { 5, 513, 7768, 16, 6, -PL_UIDEO } /* unifiedideograph=false */, - { 7, 361, 0, 21, 0, PL_MATHOPERATORS } /* mathematicaloperators */, - { 1, 8096, 8066, 4, 5, PL_ORYA } /* scx=oriya */, - { 2, 974, 6131, 24, 11, PL_CCC__DA } /* canonicalcombiningclass=doubleabove */, - { 1, 7288, 8448, 7, 4, PL_ORKH } /* script=orkh */, - { 6, 7288, 7351, 7, 4, PL_SC__TALE } /* script=tale */, - { 8, 3509, 7997, 17, 4, PL_PATWS } /* patternwhitespace=yes */, - { 1, 7459, 2004, 5, 19, PL_PRTI } /* sc=inscriptionalparthian */, - { 0, 4402, 284, 3, 32, PL_MISCMATHSYMBOLSA } /* inmiscellaneousmathematicalsymbolsa */, - { 64, 7120, 0, 8, 0, PL_BALI } /* balinese */, - { 1, 3129, 8440, 17, 4, PL_OGAM } /* scriptextensions=ogam */, - { 12, 7288, 8408, 7, 4, PL_MRO } /* script=mroo */, - { 0, 7858, 0, 6, 0, PL_KHOJ } /* khojki */, - { 2, 1701, 7768, 2, 6, -PL_SD } /* sd=false */, - { 4, 3129, 7061, 17, 9, PL_SAMR } /* scriptextensions=samaritan */, - { 1, 4402, 2637, 3, 8, PL_INMONGOLIAN } /* inmongolian */, - { 1, 7288, 8604, 7, 4, PL_SC__ZYYY } /* script=zyyy */, - { 4, 4923, 5827, 4, 10, PL_MAHJONG } /* inmahjongtiles */, - { 1, 184, 5657, 2, 5, PL_BIDIM } /* isbidim */, - { 0, 11, 7997, 2, 2, PL_DI } /* di=y */, - { 1, 1417, 3084, 9, 9, PL_Z } /* category=separator */, - { 10, 2229, 1621, 16, 6, PL_CF } /* generalcategory=format */, - { 4, 2465, 0, 11, 0, PL_COUNTINGROD } /* countingrod */, - { 0, 7136, 4813, 6, 14, PL_KANASUP } /* block=kanasupplement */, - { 6, 2249, 0, 20, 0, PL_GLAGOLITICSUP } /* glagoliticsupplement */, - { 3, 2229, 47, 16, 1, PL_M } /* generalcategory=m */, - { 0, 8096, 8580, 4, 4, PL_XPEO } /* scx=xpeo */, - { 4, 8376, 4673, 3, 14, PL_LB__CR } /* lb=carriagereturn */, - { 0, 8340, 8131, 3, 5, PL_JG__ZHAIN } /* jg=zhain */, - { 21, 8572, 3526, 3, 17, PL_RI } /* wb=regionalindicator */, - { 0, 5192, 358, 3, 3, PL_ITAL } /* isital */, - { 6, 8096, 8296, 4, 4, PL_GONM } /* scx=gonm */, - { 0, 8240, 24, 3, 1, PL_BC__L } /* bc=l */, - { 0, 5645, 5621, 10, 12, PL_BC__AL } /* bidiclass=arabicletter */, - { 0, 7232, 0, 8, 0, PL_JAMOEXTA } /* jamoexta */, - { 0, 6406, 0, 4, 0, PL_SORA } /* sora */, - { 10, 184, 2503, 2, 19, PL_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumsup */, - { 0, 7136, 1108, 7, 4, PL_INBATAK } /* block=batak */, - { 0, 3129, 4134, 17, 4, PL_BRAI } /* scriptextensions=brai */, - { 15, 6890, 7152, 4, 8, PL_INDUPLOYAN } /* blk=duployan */, - { 0, 184, 3357, 3, 16, PL_CYRILLICEXTC } /* iscyrillicextendedc */, - { 0, 8096, 7016, 4, 9, PL_PERM } /* scx=oldpermic */, - { 0, 5544, 8171, 13, 2, PL_NV__23 } /* numericvalue=23 */, - { 1, 4542, 1909, 3, 4, PL_LT } /* istitle */, - { 4, 8816, 5219, 3, 2, PL_NV__10 } /* nv=10 */, - { 2, 2229, 8263, 16, 2, PL_MC } /* generalcategory=mc */, - { 8, 184, 7192, 2, 8, PL_GUJR } /* isgujarati */, - { 11, 5375, 6656, 12, 10, PL_JT__U } /* joiningtype=nonjoining */, - { 1, 7689, 698, 4, 2, PL_ARMN } /* isarmn */, - { 1, 8096, 57, 4, 2, PL_YI } /* scx=yi */, - { 0, 6890, 2503, 4, 19, PL_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumsup */, - { 5, 5583, 3581, 13, 2, PL_QMARK } /* quotationmark=t */, - { 1, 8196, 7744, 4, 1, PL_AGE__7 } /* age=7 */, - { 3, 7994, 7769, 4, 5, -PL_IDC } /* idc=false */, - { 4, 3521, 7768, 5, 2, -PL_XPOSIXSPACE } /* space=f */, - { 14, 8288, 3003, 3, 7, PL_DT__INIT } /* dt=initial */, - { 2, 7288, 6414, 8, 3, PL_SC__BENG } /* script=beng */, - { 0, 6646, 0, 10, 0, PL_MISCARROWS } /* miscarrows */, - { 0, 8572, 6153, 3, 11, PL_WB__DQ } /* wb=doublequote */, - { 0, 8376, 7280, 3, 8, PL_LB__NL } /* lb=nextline */, - { 7, 6890, 4010, 4, 16, PL_TANGUTCOMPONENTS } /* blk=tangutcomponents */, - { 1, 8096, 7780, 4, 6, PL_CARI } /* scx=carian */, - { 0, 8096, 7320, 4, 8, PL_TFNG } /* scx=tifinagh */, - { 5, 2100, 4496, 4, 13, PL_NARB } /* isoldnortharabian */, - { 16, 5645, 435, 10, 2, PL_BC__ON } /* bidiclass=on */, - { 0, 186, 3223, 2, 3, -PL_CE } /* ce=no */, - { 1, 3129, 7128, 17, 4, PL_BASS } /* scriptextensions=bass */, - { 0, 184, 1497, 2, 14, PL_BYZANTINEMUSIC } /* isbyzantinemusic */, - { 4, 6890, 836, 4, 28, PL_SUPPUAA } /* blk=supplementaryprivateuseareaa */, - { 0, 8240, 3930, 3, 16, PL_BC__S } /* bc=segmentseparator */, - { 0, 1746, 852, 21, 1, PL_GCB__V } /* graphemeclusterbreak=v */, - { 0, 2636, 0, 4, 0, PL_MONG } /* mong */, - { 13, 2236, 0, 10, 1, PL_LU } /* category=lu */, - { 1, 8340, 4344, 3, 15, PL_JG__MANICHAEANALEPH } /* jg=manichaeanaleph */, - { 3, 84, 0, 4, 0, PL_MATH } /* math */, - { 6, 1963, 3223, 7, 2, -PL_RADICAL } /* radical=n */, - { 9, 184, 1797, 2, 14, PL_LM } /* ismodifierletter */, - { 0, 1540, 0, 4, 0, PL_PHAG } /* phag */, - { 1, 8504, 112, 3, 2, PL_SB__SC } /* sb=sc */, - { 4, 8096, 1107, 4, 8, PL_KANA } /* scx=katakana */, - { 0, 7894, 7997, 6, 2, PL_PATSYN } /* patsyn=y */, - { 1, 3129, 8452, 17, 4, PL_ORYA } /* scriptextensions=orya */, - { 15, 7136, 4827, 6, 6, PL_KANGXI } /* block=kangxi */, - { 0, 6890, 1589, 4, 9, PL_LATINEXTE } /* blk=latinexte */, - { 1, 7136, 113, 6, 25, PL_DIACRITICALS } /* block=combiningdiacriticalmarks */, - { 4, 6210, 43, 3, 15, PL_CJKCOMPAT } /* incjkcompatibility */, - { 0, 184, 6307, 2, 11, PL_MYANMAREXTA } /* ismyanmarexta */, - { 2, 1929, 3581, 9, 2, PL_XPOSIXUPPER } /* uppercase=t */, - { 3, 8816, 5219, 3, 4, PL_NV__1000 } /* nv=1000 */, - { 3, 8240, 8825, 3, 3, PL_BC__PDF } /* bc=pdf */, - { 0, 5583, 7768, 13, 2, -PL_QMARK } /* quotationmark=f */, - { 4, 2541, 0, 19, 0, PL_JAMOEXTA } /* hanguljamoextendeda */, - { 0, 4074, 6486, 15, 8, PL__PERL_CHARNAME_CONTINUE } /* _perl_charname_continue */, - { 33, 7798, 7768, 6, 6, -PL_COMPEX } /* compex=false */, - { 0, 1886, 0, 2, 0, PL_NL } /* nl */, - { 2, 2859, 8831, 18, 3, PL_DT__SML } /* decompositiontype=sml */, - { 9, 249, 2777, 5, 5, PL_CCC__A } /* _combabove */, - { 6, 8196, 7756, 4, 1, PL_AGE__9 } /* age=9 */, - { 5, 4590, 7768, 2, 2, -PL_VS } /* vs=f */, - { 0, 8096, 7312, 4, 4, PL_TAGB } /* scx=tagb */, - { 0, 7288, 8492, 7, 4, PL_RUNR } /* script=runr */, - { 6, 7136, 8106, 6, 5, PL_INTAILE } /* block=taile */, - { 10, 7136, 750, 6, 29, PL_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsupplement */, - { 1, 6890, 283, 4, 33, PL_MISCMATHSYMBOLSA } /* blk=miscellaneousmathematicalsymbolsa */, - { 0, 6263, 5753, 10, 4, PL_LB__GL } /* linebreak=glue */, - { 1, 8096, 8324, 4, 4, PL_HMNG } /* scx=hmng */, - { 1, 7288, 8304, 7, 4, PL_SC__GUJR } /* script=gujr */, - { 0, 2465, 0, 19, 0, PL_COUNTINGROD } /* countingrodnumerals */, - { 1, 8006, 7997, 5, 2, PL_CWKCF } /* cwkcf=y */, - { 2, 1929, 7768, 9, 2, -PL_XPOSIXUPPER } /* uppercase=f */, - { 0, 6586, 0, 10, 0, PL_CJKSTROKES } /* cjkstrokes */, - { 0, 8096, 2409, 5, 5, PL_BRAH } /* scx=brahmi */, - { 2, 8504, 34, 3, 2, PL_SB__EX } /* sb=ex */, - { 3, 1981, 0, 11, 0, PL_CYRILLICSUP } /* cyrillicsup */, - { 0, 8344, 18, 3, 1, PL_JT__R } /* jt=r */, - { 0, 4542, 8107, 3, 4, PL_TALE } /* istaile */, - { 20, 8344, 6656, 3, 10, PL_JT__U } /* jt=nonjoining */, - { 2, 3526, 7951, 17, 5, PL_RI } /* regionalindicator=true */, - { 3, 5657, 7997, 5, 4, PL_BIDIM } /* bidim=yes */, - { 2, 8376, 2440, 3, 2, PL_LB__BA } /* lb=ba */, - { 0, 3129, 8348, 17, 4, PL_KALI } /* scriptextensions=kali */, - { 0, 8016, 4047, 4, 3, PL_LB__H3 } /* gcb=lvt */, - { 0, 1887, 7951, 9, 5, PL_XPOSIXLOWER } /* lowercase=true */, - { 3, 2107, 0, 4, 0, PL_SINH } /* sinh */, - { 9, 21, 1107, 2, 26, PL_KATAKANAEXT } /* inkatakanaphoneticextensions */, - { 2, 184, 114, 3, 24, PL_DIACRITICALS } /* iscombiningdiacriticalmarks */, - { 0, 3237, 0, 10, 0, PL_ALCHEMICAL } /* alchemical */, - { 7, 7459, 6008, 3, 4, PL_HUNG } /* sc=hung */, - { 1, 8376, 807, 3, 2, PL_LB__SP } /* lb=sp */, - { 0, 8276, 7997, 4, 2, PL_CWCM } /* cwcm=y */, - { 0, 8096, 7646, 4, 7, PL_TAVT } /* scx=taiviet */, - { 5, 8086, 0, 5, 0, PL_QMARK } /* qmark */, - { 16, 184, 1001, 2, 27, PL_ENCLOSEDCJK } /* isenclosedcjklettersandmonths */, - { 1, 7611, 0, 4, 0, PL_SOYO } /* soyo */, - { 1, 3424, 7997, 17, 4, PL_IDSB } /* idsbinaryoperator=yes */, - { 0, 2100, 7009, 4, 7, PL_ITAL } /* isolditalic */, - { 2, 8096, 5777, 4, 6, PL_HEBR } /* scx=hebrew */, - { 1, 1658, 0, 19, 0, PL_CJKCOMPATIDEOGRAPHS } /* cjkcompatideographs */, - { 0, 7459, 7822, 3, 4, PL_HATR } /* sc=hatr */, - { 1, 6890, 7043, 4, 9, PL_INPAUCINHAU } /* blk=paucinhau */, - { 1, 2750, 7997, 19, 4, PL_TERM } /* terminalpunctuation=yes */, - { 4, 8096, 8456, 4, 4, PL_OSGE } /* scx=osge */, - { 6, 1206, 2117, 3, 3, PL_INTHAI } /* inthai */, - { 0, 1448, 7621, 5, 4, PL_SUPPUAA } /* insuppuaa */, - { 0, 6706, 8858, 10, 3, PL_IN__4 } /* presentin=v40 */, - { 7, 6890, 5414, 4, 13, PL_LOWSURROGATES } /* blk=lowsurrogates */, - { 0, 6713, 6796, 3, 10, PL_AGE__NA } /* in=unassigned */, - { 2, 7136, 2814, 6, 9, PL_HALFMARKS } /* block=halfmarks */, - { 0, 7344, 7997, 8, 2, PL_XIDS } /* xidstart=y */, - { 1, 8816, 7750, 3, 1, PL_NV__8 } /* nv=8 */, - { 2, 184, 8002, 3, 4, PL_XPOSIXCNTRL } /* iscntrl */, - { 1, 1448, 3995, 3, 5, PL_INSYRIAC } /* insyriac */, - { 1, 7136, 1209, 6, 25, PL_SUPERANDSUB } /* block=superscriptsandsubscripts */, - { 0, 6890, 2560, 4, 19, PL_JAMOEXTB } /* blk=hanguljamoextendedb */, - { 8, 7429, 0, 7, 0, PL_DSRT } /* deseret */, - { 1, 7288, 8232, 7, 4, PL_AVST } /* script=avst */, - { 0, 5544, 7710, 13, 1, PL_NV__6 } /* numericvalue=6 */, - { 2, 184, 3770, 2, 16, PL_LINEARBSYLLABARY } /* islinearbsyllabary */, - { 0, 3129, 8380, 17, 4, PL_LINA } /* scriptextensions=lina */, - { 5, 7288, 7513, 7, 7, PL_SC__MAND } /* script=mandaic */, - { 16, 1448, 2108, 3, 20, PL_SINHALAARCHAICNUMBERS } /* insinhalaarchaicnumbers */, - { 12, 7459, 6676, 3, 10, PL_XPEO } /* sc=oldpersian */, - { 8, 4464, 8256, 4, 4, PL_DT__CAN } /* nfdqc=no */, - { 4, 468, 0, 11, 0, PL_P } /* punctuation */, - { 1, 21, 3441, 2, 17, PL_LETTERLIKESYMBOLS } /* inletterlikesymbols */, - { 0, 7696, 3581, 6, 2, PL_XPOSIXSPACE } /* wspace=t */, - { 1, 7136, 78, 6, 6, PL_INARABIC } /* block=arabic */, - { 12, 8101, 7997, 5, 2, PL_STERM } /* sterm=y */, - { 1, 5544, 8618, 13, 3, PL_NV__1_SLASH_5 } /* numericvalue=1/5 */, - { 2, 6890, 8126, 4, 5, PL_VSSUP } /* blk=vssup */, - { 0, 1202, 7997, 3, 2, PL_DEP } /* dep=y */, - { 9, 8816, 8674, 3, 2, PL_NV__42 } /* nv=42 */, - { 2, 3994, 0, 6, 0, PL_SYRC } /* syriac */, - { 0, 5544, 7744, 13, 3, PL_NV__700 } /* numericvalue=700 */, - { 1, 6890, 8071, 4, 5, PL_INOSAGE } /* blk=osage */, - { 7, 7478, 3995, 3, 8, PL_SYRIACSUP } /* issyriacsup */, - { 1, 184, 2788, 3, 3, PL_CHER } /* ischer */, - { 3, 6706, 8738, 10, 3, PL_IN__5_DOT_2 } /* presentin=5.2 */, - { 0, 184, 18, 2, 2, PL_RI } /* isri */, - { 0, 8096, 3611, 5, 3, PL_BOPO } /* scx=bopo */, - { 0, 8026, 3165, 5, 10, PL_INPC__TOPANDLEFT } /* inpc=topandleft */, - { 0, 3111, 0, 18, 0, PL_RUMI } /* ruminumeralsymbols */, - { 0, 8248, 4524, 4, 4, PL_BPT__O } /* bpt=open */, - { 0, 3129, 8556, 17, 4, PL_THAI } /* scriptextensions=thai */, - { 67, 4063, 7431, 4, 5, PL_DSRT } /* indeseret */, - { 0, 1417, 699, 9, 6, PL_N } /* category=number */, - { 0, 3373, 8, 15, 1, PL_EA__A } /* eastasianwidth=a */, - { 0, 6546, 0, 10, 0, PL_ASCII } /* basiclatin */, - { 15, 6263, 2284, 10, 2, PL_LB__HL } /* linebreak=hl */, - { 1, 6890, 4104, 4, 5, PL_INBAMUM } /* blk=bamum */, - { 0, 6713, 8759, 3, 3, PL_IN__7 } /* in=7.0 */, - { 3, 7288, 7653, 7, 7, PL_TIBT } /* script=tibetan */, - { 33, 7288, 2484, 7, 4, PL_EGYP } /* script=egyp */, - { 24, 7380, 8646, 7, 2, PL_CCC__29 } /* ccc=ccc29 */, - { 23, 1503, 3391, 3, 10, PL_ETHIOPICEXT } /* inethiopicext */, - { 5, 6647, 958, 4, 2, PL_CAKM } /* iscakm */, - { 1, 6890, 4813, 4, 14, PL_KANASUP } /* blk=kanasupplement */, - { 0, 7136, 5245, 6, 5, PL_ASCII } /* block=ascii */, - { 2, 1918, 7768, 21, 6, -PL_CWU } /* changeswhenuppercased=false */, - { 0, 7459, 8320, 3, 4, PL_HLUW } /* sc=hluw */, - { 3, 8816, 8168, 3, 4, PL_NV__17_SLASH_2 } /* nv=17/2 */, - { 1, 415, 0, 11, 0, PL_IDEO } /* ideographic */, - { 0, 7380, 8164, 4, 2, PL_CCC__15 } /* ccc=15 */, - { 1, 3129, 2249, 17, 10, PL_GLAG } /* scriptextensions=glagolitic */, - { 1, 5544, 7732, 13, 3, PL_NV__500 } /* numericvalue=500 */, - { 1, 2229, 8939, 16, 2, PL_ZP } /* generalcategory=zp */, - { 3, 1746, 0, 23, 0, PL_GCB__SM } /* graphemeclusterbreak=sm */, - { 1, 974, 5219, 27, 2, PL_CCC__10 } /* canonicalcombiningclass=ccc10 */, - { 1, 5192, 3004, 3, 17, PL_PI } /* isinitialpunctuation */, - { 0, 4554, 34, 14, 2, PL_SB__EX } /* sentencebreak=ex */, - { 2, 8572, 5753, 3, 12, PL_WB__GAZ } /* wb=glueafterzwj */, - { 0, 7478, 2750, 3, 4, PL_STERM } /* issterm */, - { 0, 6890, 5717, 4, 12, PL_ETHIOPICEXTA } /* blk=ethiopicexta */, - { 1, 7288, 2044, 7, 11, PL_MTEI } /* script=meeteimayek */, - { 40, 1402, 1704, 4, 10, PL_DIACRITICALS } /* indiacriticals */, - { 1, 218, 6472, 4, 4, PL_POSIXWORD } /* perlword */, - { 8, 6890, 7870, 4, 6, PL_INLEPCHA } /* blk=lepcha */, - { 0, 8584, 0, 4, 0, PL_XSUX } /* xsux */, - { 2, 7459, 8300, 3, 4, PL_SC__GREK } /* sc=grek */, - { 1, 8096, 8436, 4, 4, PL_NSHU } /* scx=nshu */, - { 0, 3129, 8360, 17, 4, PL_KTHI } /* scriptextensions=kthi */, - { 12, 3129, 3566, 17, 11, PL_SGNW } /* scriptextensions=signwriting */, - { 0, 5544, 8862, 13, 2, PL_NV__41 } /* numericvalue=41 */, - { 0, 7459, 7120, 3, 8, PL_BALI } /* sc=balinese */, - { 27, 7689, 3596, 4, 7, PL_ARABICSUP } /* isarabicsup */, - { 0, 7288, 6980, 7, 9, PL_NBAT } /* script=nabataean */, - { 3, 5583, 7997, 13, 4, PL_QMARK } /* quotationmark=yes */, - { 10, 21, 948, 3, 26, PL_ANCIENTGREEKMUSIC } /* inancientgreekmusicalnotation */, - { 3, 184, 3690, 2, 16, PL_PF } /* isfinalpunctuation */, - { 0, 5544, 5219, 13, 5, PL_NV__10000 } /* numericvalue=10000 */, - { 0, 1503, 2896, 3, 10, PL_ETHIOPICSUP } /* inethiopicsup */, - { 0, 7136, 5388, 6, 13, PL_KANAEXTA } /* block=kanaextendeda */, - { 0, 96, 0, 10, 0, PL_XPOSIXALPHA } /* alphabetic */, - { 1, 7, 0, 18, 0, PL_CANS } /* canadianaboriginal */, - { 5, 6890, 3147, 4, 11, PL_TAIXUANJING } /* blk=taixuanjing */, - { 4, 3882, 0, 7, 0, PL_MYMR } /* myanmar */, - { 0, 184, 7409, 3, 6, PL_CJKEXTD } /* iscjkextd */, - { 5, 8101, 3223, 5, 3, -PL_STERM } /* sterm=no */, - { 1, 1417, 3005, 11, 16, PL_PI } /* category=initialpunctuation */, - { 0, 8376, 4194, 3, 15, PL_LB__CB } /* lb=contingentbreak */, - { 1, 1417, 5079, 9, 14, PL_MN } /* category=nonspacingmark */, - { 0, 7136, 2560, 6, 19, PL_JAMOEXTB } /* block=hanguljamoextendedb */, - { 28, 7380, 8655, 7, 2, PL_CCC__33 } /* ccc=ccc33 */, - { 0, 6329, 7096, 11, 8, PL_NT__NU } /* numerictype=numeric */, - { 5, 117, 1688, 4, 14, PL_INDICNUMBERFORMS } /* inindicnumberforms */, - { 2, 947, 0, 17, 0, PL_ANCIENTGREEKMUSIC } /* ancientgreekmusic */, - { 1, 7136, 836, 6, 28, PL_SUPPUAA } /* block=supplementaryprivateuseareaa */, - { 3, 1426, 5999, 22, 6, PL_LB__ZWJ } /* indicsyllabiccategory=joiner */, - { 25, 6890, 7144, 4, 8, PL_INBUGINESE } /* blk=buginese */, - { 4, 6676, 0, 10, 0, PL_XPEO } /* oldpersian */, - { 8, 3129, 4404, 17, 15, PL_MERC } /* scriptextensions=meroiticcursive */, - { 0, 34, 3223, 3, 2, -PL_EXT } /* ext=n */, - { 2, 1106, 0, 2, 0, PL_SK } /* sk */, - { 5, 974, 8740, 24, 2, PL_CCC__25 } /* canonicalcombiningclass=25 */, - { 0, 4404, 0, 15, 0, PL_MERC } /* meroiticcursive */, - { 1, 2229, 1306, 16, 13, PL_M } /* generalcategory=combiningmark */, - { 8, 974, 8703, 27, 2, PL_CCC__34 } /* canonicalcombiningclass=ccc34 */, - { 0, 184, 7272, 2, 8, PL_MAHJ } /* ismahajani */, - { 0, 7288, 4784, 7, 4, PL_CHAM } /* script=cham */, - { 1, 6890, 8368, 4, 3, PL_INLAO } /* blk=lao */, - { 5, 1929, 3581, 5, 2, PL_XPOSIXUPPER } /* upper=t */, - { 4, 1417, 1499, 9, 1, PL_Z } /* category=z */, - { 0, 8096, 7272, 4, 8, PL_MAHJ } /* scx=mahajani */, - { 4, 8011, 3075, 3, 18, PL_ZP } /* gc=paragraphseparator */, - { 4, 3965, 0, 13, 0, PL_MATHOPERATORS } /* mathoperators */, - { 0, 21, 3111, 2, 18, PL_RUMI } /* inruminumeralsymbols */, - { 1, 1929, 7768, 5, 2, -PL_XPOSIXUPPER } /* upper=f */, - { 0, 1417, 5323, 9, 13, PL_ME } /* category=enclosingmark */, - { 0, 8600, 0, 4, 0, PL_QAAI } /* zinh */, - { 0, 5544, 8771, 13, 3, PL_NV__9_SLASH_2 } /* numericvalue=9/2 */, - { 3, 8795, 893, 3, 17, PL_INVS } /* invariationselectors */, - { 0, 5544, 7744, 13, 4, PL_NV__7000 } /* numericvalue=7000 */, - { 24, 513, 0, 16, 0, PL_UIDEO } /* unifiedideograph */, - { 0, 7457, 4715, 5, 14, PL_INSC__CONSONANTFINAL } /* insc=consonantfinal */, - { 10, 1585, 0, 4, 0, PL_JAMO } /* jamo */, - { 25, 7513, 0, 7, 0, PL_MAND } /* mandaic */, - { 0, 2949, 0, 18, 0, PL_INPUNCTUATION } /* generalpunctuation */, - { 0, 7459, 7450, 3, 7, PL_SC__HANO } /* sc=hanunoo */, - { 1, 76, 7088, 2, 8, PL_XPOSIXDIGIT } /* nt=decimal */, - { 0, 2859, 8834, 18, 3, PL_DT__SQR } /* decompositiontype=sqr */, - { 2, 6472, 18, 10, 2, PL_RI } /* wordbreak=ri */, - { 6, 1426, 2189, 22, 20, PL_INSC__CONSONANTPLACEHOLDER } /* indicsyllabiccategory=consonantplaceholder */, - { 0, 494, 0, 3, 0, PL_HAN } /* han */, - { 0, 7459, 7611, 3, 4, PL_SOYO } /* sc=soyo */, - { 2, 7136, 183, 6, 34, PL_MISCPICTOGRAPHS } /* block=miscellaneoussymbolsandpictographs */, - { 0, 1133, 7768, 26, 6, -PL_PCM } /* prependedconcatenationmark=false */, - { 4, 5645, 8807, 10, 3, PL_BC__LRO } /* bidiclass=lro */, - { 5, 8572, 73, 3, 2, PL_LB__EM } /* wb=em */, - { 3, 7380, 8636, 4, 3, PL_CCC__107 } /* ccc=107 */, - { 10, 3994, 0, 16, 0, PL_SYRIACSUP } /* syriacsupplement */, - { 2, 6706, 8765, 10, 3, PL_IN__8 } /* presentin=8.0 */, - { 5, 6713, 8753, 3, 3, PL_IN__6_DOT_2 } /* in=6.2 */, - { 0, 6746, 0, 10, 0, PL_SMALLFORMS } /* smallforms */, - { 2, 5250, 3223, 8, 2, -PL_XPOSIXXDIGIT } /* hexdigit=n */, - { 1, 8508, 7871, 4, 5, PL_LEPC } /* sc=lepcha */, - { 5, 8504, 235, 3, 2, PL_SB__LO } /* sb=lo */, - { 5, 5645, 8825, 10, 3, PL_BC__PDF } /* bidiclass=pdf */, - { 4, 7288, 6806, 7, 4, PL_WARA } /* script=wara */, - { 6, 7478, 2108, 3, 20, PL_SINHALAARCHAICNUMBERS } /* issinhalaarchaicnumbers */, - { 0, 5765, 3223, 12, 3, -PL_GRBASE } /* graphemebase=no */, - { 25, 513, 3223, 16, 3, -PL_UIDEO } /* unifiedideograph=no */, - { 0, 3129, 7991, 17, 5, PL_BUHD } /* scriptextensions=buhid */, - { 1, 2674, 0, 19, 0, PL_SUNDANESESUP } /* sundanesesupplement */, - { 0, 7136, 3021, 6, 9, PL_LATINEXTA } /* block=latinexta */, - { 4, 3526, 7768, 17, 2, -PL_RI } /* regionalindicator=f */, - { 0, 7136, 4209, 6, 15, PL_CONTROLPICTURES } /* block=controlpictures */, - { 21, 7471, 1929, 7, 5, PL_POSIXUPPER } /* isposixupper */, - { 0, 5765, 3223, 12, 2, -PL_GRBASE } /* graphemebase=n */, - { 0, 7136, 6547, 7, 9, PL_ASCII } /* block=basiclatin */, - { 0, 7288, 8408, 7, 3, PL_MRO } /* script=mro */, - { 1, 3129, 8524, 17, 4, PL_SHRD } /* scriptextensions=shrd */, - { 2, 7478, 3567, 3, 10, PL_SGNW } /* issignwriting */, - { 0, 7459, 7312, 3, 4, PL_SC__TAGB } /* sc=tagb */, - { 0, 4314, 5, 13, 1, PL_JG__E } /* joininggroup=e */, - { 19, 184, 235, 2, 2, PL_LO } /* islo */, - { 0, 217, 1392, 6, 9, PL_CS } /* _perl_surrogate */, - { 27, 4314, 7304, 13, 8, PL_JG__SWASHKAF } /* joininggroup=swashkaf */, - { 0, 1358, 0, 20, 0, PL_CE } /* compositionexclusion */, - { 0, 2229, 4599, 16, 15, PL_LU } /* generalcategory=uppercaseletter */, - { 3, 4799, 0, 14, 0, PL_HIGHSURROGATES } /* highsurrogates */, - { 15, 21, 6806, 2, 10, PL_INWARANGCITI } /* inwarangciti */, - { 0, 7478, 6292, 3, 3, PL_SAMR } /* issamr */, - { 2, 184, 6241, 2, 11, PL_KATAKANAEXT } /* iskatakanaext */, - { 3, 8240, 2579, 3, 19, PL_BC__LRO } /* bc=lefttorightoverride */, - { 0, 7288, 7248, 7, 4, PL_SC__JAVA } /* script=java */, - { 2, 4198, 1545, 4, 21, PL_GEOMETRICSHAPESEXT } /* ingeometricshapesextended */, - { 0, 7288, 494, 7, 3, PL_SC__HAN } /* script=han */, - { 0, 2985, 0, 18, 0, PL_IDST } /* idstrinaryoperator */, - { 0, 2023, 7768, 21, 2, -PL_LOE } /* logicalorderexception=f */, - { 1, 25, 0, 1, 0, PL_S } /* s */, - { 2, 7798, 3581, 6, 2, PL_COMPEX } /* compex=t */, - { 0, 2023, 7951, 21, 5, PL_LOE } /* logicalorderexception=true */, - { 11, 8816, 7756, 3, 4, PL_NV__9000 } /* nv=9000 */, - { 1, 6890, 7025, 4, 9, PL_INOLDTURKIC } /* blk=oldturkic */, - { 1, 8348, 0, 4, 0, PL_KALI } /* kali */, - { 4, 8816, 8899, 3, 2, PL_NV__35 } /* nv=35 */, - { 1, 8376, 5777, 3, 12, PL_LB__HL } /* lb=hebrewletter */, - { 2, 1474, 5488, 22, 4, PL_BPT__N } /* bidipairedbrackettype=none */, - { 1, 58, 7997, 4, 2, PL_IDEO } /* ideo=y */, - { 4, 6554, 4105, 3, 4, PL_INBAMUM } /* inbamum */, - { 1, 5375, 18, 12, 1, PL_JT__R } /* joiningtype=r */, - { 0, 6890, 250, 4, 33, PL_DIACRITICALSEXT } /* blk=combiningdiacriticalmarksextended */, - { 1, 7136, 7320, 6, 8, PL_INTIFINAGH } /* block=tifinagh */, - { 0, 84, 3223, 4, 3, -PL_MATH } /* math=no */, - { 4, 7380, 8642, 4, 3, PL_CCC__122 } /* ccc=122 */, - { 3, 6472, 6962, 10, 9, PL_WB__ML } /* wordbreak=midletter */, - { 10, 974, 6836, 24, 9, PL_CCC__AL } /* canonicalcombiningclass=aboveleft */, - { 2, 8376, 8929, 3, 2, PL_GCB__V } /* lb=jv */, - { 1, 6890, 42, 4, 3, PL_CJK } /* blk=cjk */, - { 18, 1417, 2088, 9, 2, PL_PD } /* category=pd */, - { 0, 7471, 5253, 7, 5, PL_POSIXDIGIT } /* isposixdigit */, - { 0, 1354, 0, 24, 0, PL_COMPEX } /* fullcompositionexclusion */, - { 1, 3129, 8300, 17, 4, PL_GREK } /* scriptextensions=grek */, - { 12, 2750, 7997, 19, 2, PL_TERM } /* terminalpunctuation=y */, - { 1, 8508, 8047, 4, 3, PL_SC__LIMB } /* sc=limb */, - { 0, 21, 8368, 2, 3, PL_INLAO } /* inlao */, - { 6, 7459, 2877, 3, 4, PL_SC__DEVA } /* sc=deva */, - { 0, 3129, 2877, 17, 10, PL_DEVA } /* scriptextensions=devanagari */, - { 2, 974, 8673, 24, 2, PL_CCC__14 } /* canonicalcombiningclass=14 */, - { 0, 184, 251, 3, 32, PL_DIACRITICALSEXT } /* iscombiningdiacriticalmarksextended */, - { 1, 8795, 5597, 3, 12, PL_VERTICALFORMS } /* inverticalforms */, - { 0, 6890, 1960, 4, 21, PL_CJKRADICALSSUP } /* blk=cjkradicalssupplement */, - { 5, 184, 1982, 3, 17, PL_CYRILLICSUP } /* iscyrillicsupplement */, - { 0, 6713, 8870, 3, 3, PL_IN__5_DOT_2 } /* in=v52 */, - { 0, 6613, 975, 3, 3, PL_HANO } /* ishano */, - { 0, 7136, 510, 6, 20, PL_CJK } /* block=cjkunifiedideographs */, - { 16, 974, 8690, 24, 3, PL_CCC__AL } /* canonicalcombiningclass=228 */, - { 0, 8508, 7883, 4, 5, PL_LYDI } /* sc=lydian */, - { 3, 2023, 3581, 21, 2, PL_LOE } /* logicalorderexception=t */, - { 0, 6890, 2465, 4, 19, PL_COUNTINGROD } /* blk=countingrodnumerals */, - { 0, 6483, 3223, 11, 3, -PL_XIDC } /* xidcontinue=no */, - { 17, 1206, 7633, 3, 6, PL_INTAGALOG } /* intagalog */, - { 0, 3594, 0, 16, 0, PL_ARABICSUP } /* arabicsupplement */, - { 28, 2100, 6678, 4, 8, PL_XPEO } /* isoldpersian */, - { 3, 8816, 8640, 3, 2, PL_NV__18 } /* nv=18 */, - { 0, 7459, 8280, 3, 4, PL_SC__CYRL } /* sc=cyrl */, - { 4, 974, 6142, 24, 11, PL_CCC__DB } /* canonicalcombiningclass=doublebelow */, - { 0, 21, 3021, 2, 9, PL_LATINEXTA } /* inlatinexta */, - { 0, 2221, 7671, 3, 3, PL_HST__NA } /* hst=na */, - { 1, 5375, 24, 12, 1, PL_JT__L } /* joiningtype=l */, - { 7, 6706, 8726, 10, 3, PL_IN__4_DOT_1 } /* presentin=4.1 */, - { 0, 4757, 7997, 14, 4, PL_GREXT } /* graphemeextend=yes */, - { 1, 6221, 4216, 9, 8, PL_CONTROLPICTURES } /* incontrolpictures */, - { 0, 7136, 7625, 6, 7, PL_SUPPUAB } /* block=suppuab */, - { 0, 4314, 6637, 14, 9, PL_JG__KNOTTEDHEH } /* joininggroup=knottedheh */, - { 0, 8196, 8732, 4, 3, PL_AGE__5 } /* age=5.0 */, - { 0, 7288, 8384, 7, 4, PL_SC__LINB } /* script=linb */, - { 12, 5657, 7951, 12, 5, PL_BIDIM } /* bidimirrored=true */, - { 0, 1887, 0, 5, 0, PL_XPOSIXLOWER } /* lower */, - { 0, 184, 7870, 2, 6, PL_LEPC } /* islepcha */, - { 0, 7288, 7208, 7, 8, PL_SC__HIRA } /* script=hiragana */, - { 0, 6263, 8923, 10, 2, PL_LB__H2 } /* linebreak=h2 */, - { 1, 21, 6980, 2, 9, PL_INNABATAEAN } /* innabataean */, - { 0, 8376, 8935, 3, 2, PL_LB__XX } /* lb=xx */, - { 2, 184, 4827, 2, 6, PL_KANGXI } /* iskangxi */, - { 3, 5544, 7702, 13, 5, PL_NV__20000 } /* numericvalue=20000 */, - { 3, 8340, 2437, 3, 9, PL_JG__YEHBARREE } /* jg=yehbarree */, - { 2, 7380, 8899, 7, 2, PL_CCC__35 } /* ccc=ccc35 */, - { 4, 7459, 7019, 3, 4, PL_SC__PERM } /* sc=perm */, - { 0, 6329, 7762, 11, 6, PL_NT__DI } /* numerictype=digit */, - { 1, 5933, 0, 12, 0, PL_GONM } /* masaramgondi */, - { 0, 8816, 8136, 3, 4, PL_NV___MINUS_1_SLASH_2 } /* nv=-1/2 */, - { 2, 1876, 7951, 21, 5, PL_CWL } /* changeswhenlowercased=true */, - { 1, 7136, 7846, 6, 6, PL_INKAITHI } /* block=kaithi */, - { 0, 7380, 8703, 4, 2, PL_CCC__34 } /* ccc=34 */, - { 0, 5544, 8899, 13, 2, PL_NV__35 } /* numericvalue=35 */, - { 0, 7136, 3322, 6, 17, PL_CYRILLICEXTA } /* block=cyrillicextendeda */, - { 8, 8196, 8723, 4, 3, PL_AGE__4 } /* age=4.0 */, - { 6, 8780, 7768, 3, 2, -PL_CWT } /* cwt=f */, - { 1, 1417, 74, 9, 2, PL_ME } /* category=me */, - { 15, 8520, 0, 4, 0, PL_SHAW } /* shaw */, - { 1, 8340, 4374, 3, 15, PL_JG__MANICHAEANSADHE } /* jg=manichaeansadhe */, - { 0, 2229, 48, 16, 1, PL_P } /* generalcategory=p */, - { 0, 8111, 0, 4, 0, PL_TAKR } /* takr */, - { 0, 6263, 4701, 10, 14, PL_LB__SA } /* linebreak=complexcontext */, - { 1, 8504, 496, 3, 7, PL_LB__NU } /* sb=numeric */, - { 3, 7457, 5993, 5, 12, PL_INSC__NUMBERJOINER } /* insc=numberjoiner */, - { 46, 8096, 8432, 4, 3, PL_NKO } /* scx=nko */, - { 3, 184, 7248, 2, 8, PL_JAVA } /* isjavanese */, - { 0, 7459, 3288, 3, 17, PL_AGHB } /* sc=caucasianalbanian */, - { 0, 8816, 5219, 3, 6, PL_NV__100000 } /* nv=100000 */, - { 4, 6713, 8152, 3, 4, PL_IN__10 } /* in=10.0 */, - { 8, 7828, 3581, 6, 2, PL_HYPHEN } /* hyphen=t */, - { 3, 7840, 1479, 3, 2, PL_VAI } /* isvai */, - { 133, 7288, 7646, 7, 7, PL_TAVT } /* script=taiviet */, - { 13, 8096, 7870, 4, 6, PL_LEPC } /* scx=lepcha */, - { 0, 21, 7360, 3, 6, PL_INAVESTAN } /* inavestan */, - { 1, 8096, 7876, 4, 6, PL_LYCI } /* scx=lycian */, - { 0, 7632, 0, 7, 0, PL_TGLG } /* tagalog */, - { 1, 1448, 2676, 4, 10, PL_SUNDANESESUP } /* insundanesesup */, - { 2, 6706, 8891, 10, 3, PL_IN__9 } /* presentin=v90 */, - { 16, 184, 8360, 2, 4, PL_KTHI } /* iskthi */, - { 35, 6890, 6736, 4, 10, PL_INSAURASHTRA } /* blk=saurashtra */, - { 1, 7136, 5801, 6, 5, PL_INKHMER } /* block=khmer */, - { 2, 1402, 3165, 24, 18, PL_INPC__TOPANDLEFTANDRIGHT } /* indicpositionalcategory=topandleftandright */, - { 0, 8096, 5825, 4, 4, PL_MAHJ } /* scx=mahj */, - { 0, 415, 7768, 11, 6, -PL_IDEO } /* ideographic=false */, - { 0, 218, 0, 2, 0, PL_PE } /* pe */, - { 0, 5645, 3093, 10, 18, PL_BC__RLI } /* bidiclass=righttoleftisolate */, - { 17, 7226, 5252, 6, 6, PL_XPOSIXXDIGIT } /* xposixxdigit */, - { 0, 6890, 6872, 4, 9, PL_ARABICPFB } /* blk=arabicpfb */, - { 0, 8096, 1589, 4, 5, PL_LATN } /* scx=latin */, - { 34, 1402, 4629, 24, 15, PL_LOE } /* indicpositionalcategory=visualorderleft */, - { 10, 6263, 8344, 10, 2, PL_GCB__T } /* linebreak=jt */, - { 2, 6890, 4284, 4, 15, PL_INHANGUL } /* blk=hangulsyllables */, - { 3, 96, 3223, 5, 3, -PL_XPOSIXALPHA } /* alpha=no */, - { 2, 7136, 3611, 7, 15, PL_BOPOMOFOEXT } /* block=bopomofoextended */, - { 1, 8096, 7810, 4, 6, PL_GOTH } /* scx=gothic */, - { 5, 7288, 7822, 7, 4, PL_HATR } /* script=hatr */, - { 0, 3129, 8432, 17, 3, PL_NKO } /* scriptextensions=nko */, - { 2, 7136, 4135, 7, 6, PL_BRAI } /* block=braille */, - { 1, 3129, 3458, 17, 4, PL_MANI } /* scriptextensions=mani */, - { 2, 4284, 4042, 14, 7, PL_LB__H2 } /* hangulsyllabletype=lv */, - { 9, 7136, 3339, 6, 17, PL_CYRILLICEXTB } /* block=cyrillicextendedb */, - { 1, 7136, 690, 6, 16, PL_CUNEIFORMNUMBERS } /* block=cuneiformnumbers */, - { 1, 1701, 3223, 2, 2, -PL_SD } /* sd=n */, - { 8, 8086, 7997, 5, 4, PL_QMARK } /* qmark=yes */, - { 0, 8086, 7768, 5, 2, -PL_QMARK } /* qmark=f */, - { 2, 8240, 3516, 3, 10, PL_BC__WS } /* bc=whitespace */, - { 5, 3424, 0, 17, 0, PL_IDSB } /* idsbinaryoperator */, - { 3, 3129, 2787, 17, 4, PL_CHER } /* scriptextensions=cher */, - { 12, 7380, 5219, 7, 2, PL_CCC__10 } /* ccc=ccc10 */, - { 6, 6890, 8568, 4, 3, PL_INVAI } /* blk=vai */, - { 0, 7459, 8404, 3, 4, PL_SC__MLYM } /* sc=mlym */, - { 0, 6890, 4841, 4, 14, PL_LATINEXTB } /* blk=latinextendedb */, - { 1, 7459, 8492, 3, 4, PL_RUNR } /* sc=runr */, - { 0, 6890, 416, 5, 31, PL_INIDC } /* blk=ideographicdescriptioncharacters */, - { 0, 7136, 7025, 6, 9, PL_INOLDTURKIC } /* block=oldturkic */, - { 1, 3129, 7882, 17, 6, PL_LYDI } /* scriptextensions=lydian */, - { 0, 6472, 1107, 10, 8, PL_WB__KA } /* wordbreak=katakana */, - { 0, 6472, 3985, 10, 9, PL_LB__EM } /* wordbreak=emodifier */, - { 1, 1448, 7605, 3, 6, PL_INSIDDHAM } /* insiddham */, - { 3, 7288, 2674, 7, 4, PL_SUND } /* script=sund */, - { 3, 7380, 8645, 7, 3, PL_CCC__129 } /* ccc=ccc129 */, - { 1, 7136, 468, 6, 11, PL_INPUNCTUATION } /* block=punctuation */, - { 0, 3129, 8324, 17, 4, PL_HMNG } /* scriptextensions=hmng */, - { 1, 8236, 0, 4, 0, PL_BATK } /* batk */, - { 3, 5544, 7750, 13, 6, PL_NV__800000 } /* numericvalue=800000 */, - { 0, 184, 7232, 2, 8, PL_JAMOEXTA } /* isjamoexta */, - { 15, 184, 568, 2, 2, PL_NB } /* isnb */, - { 2, 184, 4771, 2, 14, PL_INGREEK } /* isgreekandcoptic */, - { 24, 184, 2044, 2, 14, PL_MEETEIMAYEKEXT } /* ismeeteimayekext */, - { 1, 7136, 1081, 6, 26, PL_HALFANDFULLFORMS } /* block=halfwidthandfullwidthforms */, - { 9, 184, 1585, 2, 4, PL_JAMO } /* isjamo */, - { 0, 7380, 16, 4, 1, PL_CCC__B } /* ccc=b */, - { 0, 6890, 7786, 4, 6, PL_INCHAKMA } /* blk=chakma */, - { 3, 2229, 0, 17, 0, PL_L } /* generalcategory=l */, - { 4, 8508, 1590, 4, 4, PL_SC__LATN } /* sc=latin */, - { 4, 7344, 3223, 4, 2, -PL_XIDS } /* xids=n */, - { 0, 119, 7201, 3, 7, PL_INGURMUKHI } /* ingurmukhi */, - { 1, 21, 568, 2, 2, PL_NB } /* innb */, - { 0, 8508, 4789, 4, 2, PL_LAO } /* sc=lao */, - { 4, 21, 3239, 4, 15, PL_ALCHEMICAL } /* inalchemicalsymbols */, - { 1, 1402, 6121, 3, 5, PL_DOMINO } /* indomino */, - { 2, 8376, 18, 3, 2, PL_RI } /* lb=ri */, - { 0, 5250, 3223, 8, 3, -PL_XPOSIXXDIGIT } /* hexdigit=no */, - { 3, 4630, 1930, 3, 4, PL_XPOSIXUPPER } /* isupper */, - { 34, 5583, 7951, 13, 5, PL_QMARK } /* quotationmark=true */, - { 2, 8096, 7010, 4, 4, PL_ITAL } /* scx=ital */, - { 0, 4479, 966, 15, 2, PL_NFKCQC__N } /* nfkcquickcheck=no */, - { 10, 6890, 3322, 4, 17, PL_CYRILLICEXTA } /* blk=cyrillicextendeda */, - { 2, 4494, 0, 15, 0, PL_NARB } /* oldnortharabian */, - { 1, 3129, 2408, 17, 4, PL_BRAH } /* scriptextensions=brah */, - { 0, 6483, 3223, 4, 2, -PL_XIDC } /* xidc=n */, - { 0, 3129, 7200, 17, 8, PL_GURU } /* scriptextensions=gurmukhi */, - { 0, 4314, 2437, 13, 3, PL_JG__YEH } /* joininggroup=yeh */, - { 0, 5544, 8643, 13, 2, PL_NV__22 } /* numericvalue=22 */, - { 0, 3129, 7513, 17, 7, PL_MAND } /* scriptextensions=mandaic */, - { 68, 8816, 7941, 3, 2, PL_NV__11 } /* nv=11 */, - { 0, 7459, 8584, 3, 4, PL_XSUX } /* sc=xsux */, - { 0, 7288, 8356, 7, 4, PL_SC__KNDA } /* script=knda */, - { 0, 7192, 0, 8, 0, PL_GUJR } /* gujarati */, - { 0, 8272, 3581, 4, 2, PL_CWCF } /* cwcf=t */, - { 0, 4402, 6297, 3, 10, PL_MISCSYMBOLS } /* inmiscsymbols */, - { 27, 8096, 8284, 4, 4, PL_DSRT } /* scx=dsrt */, - { 1, 6890, 468, 4, 11, PL_INPUNCTUATION } /* blk=punctuation */, - { 2, 6706, 7714, 10, 1, PL_IN__3 } /* presentin=3 */, - { 1, 8196, 7720, 4, 1, PL_AGE__4 } /* age=4 */, - { 0, 892, 7768, 17, 6, -PL_VS } /* variationselector=false */, - { 2, 4402, 3883, 3, 15, PL_MYANMAREXTA } /* inmyanmarextendeda */, - { 10, 3509, 7951, 17, 5, PL_PATWS } /* patternwhitespace=true */, - { 0, 1378, 0, 24, 0, PL_HIGHPUSURROGATES } /* highprivateusesurrogates */, - { 0, 1402, 2349, 24, 12, PL_INPC__TOPANDBOTTOM } /* indicpositionalcategory=topandbottom */, - { 0, 7136, 8568, 6, 3, PL_INVAI } /* block=vai */, - { 1, 6890, 750, 4, 22, PL_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsup */, - { 9, 6219, 7768, 11, 6, -PL_JOINC } /* joincontrol=false */, - { 2, 3129, 7527, 17, 7, PL_MULT } /* scriptextensions=multani */, - { 0, 8894, 18, 3, 1, PL_VO__R } /* vo=r */, - { 0, 7240, 0, 8, 0, PL_JAMOEXTB } /* jamoextb */, - { 18, 4402, 184, 3, 19, PL_MISCSYMBOLS } /* inmiscellaneoussymbols */, - { 0, 2221, 4046, 3, 3, PL_LB__H2 } /* hst=lv */, - { 0, 7380, 24, 4, 1, PL_CCC__L } /* ccc=l */, - { 0, 34, 7951, 3, 5, PL_EXT } /* ext=true */, - { 0, 1159, 7997, 25, 2, PL_CWKCF } /* changeswhennfkccasefolded=y */, - { 1, 6890, 2674, 4, 9, PL_INSUNDANESE } /* blk=sundanese */, - { 26, 8026, 6030, 3, 7, PL_PHAISTOS } /* inphaistos */, - { 1, 7459, 7780, 3, 6, PL_CARI } /* sc=carian */, - { 2, 5134, 7045, 4, 7, PL_PAUC } /* ispaucinhau */, - { 7, 7459, 4010, 3, 4, PL_TANG } /* sc=tang */, - { 1, 3854, 0, 10, 0, PL_SM } /* mathsymbol */, - { 16, 5777, 0, 4, 0, PL_HEBR } /* hebr */, - { 4, 5245, 7997, 13, 4, PL_POSIXXDIGIT } /* asciihexdigit=yes */, - { 34, 3129, 4134, 17, 7, PL_BRAI } /* scriptextensions=braille */, - { 0, 7128, 0, 4, 0, PL_BASS } /* bass */, - { 0, 8026, 6374, 3, 10, PL_INPAHAWHHMONG } /* inpahawhhmong */, - { 1, 7478, 2675, 3, 8, PL_SUND } /* issundanese */, - { 16, 8096, 7034, 4, 9, PL_PALM } /* scx=palmyrene */, - { 4, 7136, 1566, 6, 6, PL_INHANGUL } /* block=hangul */, - { 8, 436, 7768, 5, 6, -PL_NCHAR } /* nchar=false */, - { 0, 8011, 468, 3, 11, PL_P } /* gc=punctuation */, - { 1, 1627, 0, 7, 0, PL_XPOSIXCNTRL } /* control */, - { 2, 6890, 6953, 4, 9, PL_LATINEXTD } /* blk=latinextd */, - { 4, 2236, 36, 10, 1, PL_LT } /* category=lt */, - { 4, 8011, 235, 3, 2, PL_LO } /* gc=lo */, - { 0, 6890, 3021, 4, 18, PL_LATINEXTADDITIONAL } /* blk=latinextadditional */, - { 1, 8196, 8855, 4, 3, PL_AGE__3_DOT_2 } /* age=v32 */, - { 2, 184, 4813, 2, 7, PL_KANASUP } /* iskanasup */, - { 2, 7136, 6307, 6, 11, PL_MYANMAREXTA } /* block=myanmarexta */, - { 7, 1474, 0, 23, 0, PL_BPT__C } /* bidipairedbrackettype=c */, - { 15, 8011, 2169, 3, 20, PL_PC } /* gc=connectorpunctuation */, - { 2, 4314, 5065, 13, 14, PL_JG__NOJOININGGROUP } /* joininggroup=nojoininggroup */, - { 7, 7136, 7192, 6, 8, PL_INGUJARATI } /* block=gujarati */, - { 0, 184, 1621, 2, 6, PL_CF } /* isformat */, - { 2, 8816, 7710, 3, 1, PL_NV__6 } /* nv=6 */, - { 0, 21, 2390, 3, 18, PL_ANCIENTGREEKNUMBERS } /* inancientgreeknumbers */, - { 1, 7136, 5825, 6, 7, PL_MAHJONG } /* block=mahjong */, - { 0, 7136, 1981, 6, 8, PL_INCYRILLIC } /* block=cyrillic */, - { 0, 8572, 1621, 3, 6, PL_WB__FO } /* wb=format */, - { 0, 2229, 1204, 16, 2, PL_PO } /* generalcategory=po */, - { 20, 6109, 1307, 10, 12, PL_M } /* category=combiningmark */, - { 0, 3129, 7043, 17, 4, PL_PAUC } /* scriptextensions=pauc */, - { 0, 4239, 7951, 4, 5, PL_DASH } /* dash=true */, - { 3, 8096, 8220, 4, 4, PL_ARMN } /* scx=armn */, - { 0, 34, 3223, 3, 3, -PL_EXT } /* ext=no */, - { 20, 7459, 2841, 3, 6, PL_SC__COPT } /* sc=coptic */, - { 0, 4590, 7997, 2, 2, PL_VS } /* vs=y */, - { 1, 7136, 2949, 6, 18, PL_INPUNCTUATION } /* block=generalpunctuation */, - { 8, 8011, 4599, 3, 15, PL_LU } /* gc=uppercaseletter */, - { 5, 8504, 807, 3, 2, PL_SB__SP } /* sb=sp */, - { 0, 5134, 83, 3, 2, PL_PCM } /* ispcm */, - { 22, 2134, 7997, 3, 4, PL_XPOSIXXDIGIT } /* hex=yes */, - { 0, 8288, 4188, 3, 6, PL_DT__MED } /* dt=medial */, - { 20, 3129, 7882, 17, 4, PL_LYDI } /* scriptextensions=lydi */, - { 0, 8783, 7997, 3, 2, PL_CWU } /* cwu=y */, - { 51, 8096, 8253, 5, 3, PL_BUHD } /* scx=buhd */, - { 2, 8504, 496, 3, 2, PL_LB__NU } /* sb=nu */, - { 0, 8340, 218, 3, 2, PL_JG__PE } /* jg=pe */, - { 0, 7478, 6407, 3, 10, PL_SORA } /* issorasompeng */, - { 0, 6890, 8111, 4, 5, PL_INTAKRI } /* blk=takri */, - { 0, 7224, 5253, 3, 5, PL_XPOSIXXDIGIT } /* isxdigit */, - { 6, 184, 6208, 2, 5, PL_JOINC } /* isjoinc */, - { 0, 5544, 7750, 13, 4, PL_NV__8000 } /* numericvalue=8000 */, - { 0, 7224, 8585, 3, 3, PL_XSUX } /* isxsux */, - { 0, 6472, 8935, 10, 2, PL_WB__XX } /* wordbreak=xx */, - { 0, 8816, 7732, 3, 1, PL_NV__5 } /* nv=5 */, - { 2, 117, 4300, 3, 14, PL_INIMPERIALARAMAIC } /* inimperialaramaic */, - { 0, 7846, 0, 6, 0, PL_KTHI } /* kaithi */, - { 14, 6506, 4832, 3, 9, PL_YIRADICALS } /* isyiradicals */, - { 16, 7906, 800, 4, 3, PL_SC__KNDA } /* sc=knda */, - { 0, 2598, 0, 4, 0, PL_MERO } /* mero */, - { 0, 3424, 7951, 17, 5, PL_IDSB } /* idsbinaryoperator=true */, - { 3, 6890, 5801, 4, 5, PL_INKHMER } /* blk=khmer */, - { 6, 5544, 8663, 13, 3, PL_NV__2_SLASH_3 } /* numericvalue=2/3 */, - { 0, 8340, 6065, 3, 11, PL_JG__AFRICANNOON } /* jg=africannoon */, - { 2, 8340, 5528, 3, 3, PL_JG__WAW } /* jg=waw */, - { 5, 184, 1940, 3, 20, PL_CJKCOMPATFORMS } /* iscjkcompatibilityforms */, - { 0, 6890, 7034, 4, 9, PL_PALM } /* blk=palmyrene */, - { 5, 4630, 7675, 3, 6, PL_UCASEXT } /* isucasext */, - { 3, 7136, 2895, 6, 8, PL_INETHIOPIC } /* block=ethiopic */, - { 9, 6890, 1107, 4, 8, PL_INKATAKANA } /* blk=katakana */, - { 0, 6263, 807, 10, 2, PL_LB__SP } /* linebreak=sp */, - { 0, 6713, 8891, 3, 3, PL_IN__9 } /* in=v90 */, - { 0, 5134, 7, 3, 1, PL_PC } /* ispc */, - { 2, 1746, 34, 21, 6, PL_GREXT } /* graphemeclusterbreak=extend */, - { 2, 184, 1012, 2, 6, PL_L } /* isletter */, - { 0, 21, 3021, 2, 18, PL_LATINEXTADDITIONAL } /* inlatinextadditional */, - { 4, 8344, 7, 3, 1, PL_JT__C } /* jt=c */, - { 4, 7288, 8348, 7, 4, PL_SC__KALI } /* script=kali */, - { 4, 6890, 2541, 4, 19, PL_JAMOEXTA } /* blk=hanguljamoextendeda */, - { 0, 7136, 2841, 6, 18, PL_COPTICEPACTNUMBERS } /* block=copticepactnumbers */, - { 4, 3129, 7152, 17, 8, PL_DUPL } /* scriptextensions=duployan */, - { 0, 8336, 7655, 4, 5, PL_INTIBETAN } /* intibetan */, - { 1, 7459, 7272, 3, 8, PL_SC__MAHJ } /* sc=mahajani */, - { 2, 7226, 62, 6, 5, PL_XPOSIXGRAPH } /* xposixgraph */, - { 0, 7136, 3111, 6, 4, PL_RUMI } /* block=rumi */, - { 8, 7288, 8460, 7, 4, PL_SC__PHLP } /* script=phlp */, - { 3, 7443, 0, 4, 0, PL_GRAN } /* gran */, - { 1, 7478, 2675, 3, 18, PL_SUNDANESESUP } /* issundanesesupplement */, - { 1, 7288, 6439, 7, 11, PL_SC__SYLO } /* script=sylotinagri */, - { 0, 5765, 0, 12, 0, PL_GRBASE } /* graphemebase */, - { 1, 5544, 7732, 13, 1, PL_NV__5 } /* numericvalue=5 */, - { 40, 8101, 3581, 5, 2, PL_STERM } /* sterm=t */, - { 1, 78, 0, 6, 0, PL_ARAB } /* arabic */, - { 1, 5544, 8148, 13, 3, PL_NV__1_SLASH_4 } /* numericvalue=1/4 */, - { 1, 6472, 5772, 10, 5, PL_WB__EB } /* wordbreak=ebase */, - { 5, 7906, 8, 4, 3, PL_SC__KANA } /* sc=kana */, - { 1, 6890, 2617, 4, 19, PL_MODIFIERTONELETTERS } /* blk=modifiertoneletters */, - { 0, 8101, 7768, 5, 2, -PL_STERM } /* sterm=f */, - { 1, 8816, 8909, 3, 2, PL_NV__45 } /* nv=45 */, - { 7, 6210, 691, 3, 29, PL_CUNEIFORMNUMBERS } /* incuneiformnumbersandpunctuation */, - { 38, 6890, 1658, 4, 22, PL_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatideographssup */, - { 0, 7136, 864, 6, 28, PL_SUPPUAB } /* block=supplementaryprivateuseareab */, - { 4, 7459, 7336, 3, 4, PL_UGAR } /* sc=ugar */, - { 6, 5544, 8144, 13, 4, PL_NV__1_SLASH_20 } /* numericvalue=1/20 */, - { 0, 3129, 7822, 17, 6, PL_HATR } /* scriptextensions=hatran */, - { 4, 3129, 8416, 17, 4, PL_MYMR } /* scriptextensions=mymr */, - { 36, 8096, 7590, 4, 7, PL_SHRD } /* scx=sharada */, - { 3, 6890, 690, 4, 16, PL_CUNEIFORMNUMBERS } /* blk=cuneiformnumbers */, - { 0, 3129, 8460, 17, 4, PL_PHLP } /* scriptextensions=phlp */, - { 0, 1426, 7328, 22, 8, PL_INSC__TONEMARK } /* indicsyllabiccategory=tonemark */, - { 0, 7136, 7248, 6, 8, PL_INJAVANESE } /* block=javanese */, - { 15, 184, 1506, 2, 14, PL_MUSIC } /* ismusicalsymbols */, - { 3, 5544, 7720, 13, 2, PL_NV__40 } /* numericvalue=40 */, - { 2, 5681, 0, 12, 0, PL_CYRILLICEXTA } /* cyrillicexta */, - { 10, 1680, 0, 6, 0, PL_ZYYY } /* common */, - { 4, 8096, 8480, 4, 4, PL_QAAI } /* scx=qaai */, - { 4, 7136, 2693, 6, 19, PL_SUPARROWSA } /* block=supplementalarrowsa */, - { 0, 8036, 7683, 4, 5, PL_ZZZZ } /* isunknown */, - { 0, 184, 6597, 3, 9, PL_COMPATJAMO } /* iscompatjamo */, - { 2, 5645, 7997, 5, 4, PL_BIDIC } /* bidic=yes */, - { 0, 7288, 2098, 8, 3, PL_BALI } /* script=bali */, - { 6, 7224, 6472, 8, 4, PL_XPOSIXWORD } /* isxposixword */, - { 2, 8096, 8460, 4, 4, PL_PHLP } /* scx=phlp */, - { 0, 7380, 8691, 7, 2, PL_CCC__28 } /* ccc=ccc28 */, - { 2, 3129, 8468, 17, 4, PL_MIAO } /* scriptextensions=plrd */, - { 4, 1702, 0, 22, 0, PL_DIACRITICALSFORSYMBOLS } /* diacriticalsforsymbols */, - { 3, 2100, 8067, 3, 4, PL_ORYA } /* isoriya */, - { 32, 8096, 7429, 4, 7, PL_DSRT } /* scx=deseret */, - { 0, 7136, 3237, 6, 10, PL_ALCHEMICAL } /* block=alchemical */, - { 1, 4314, 4384, 13, 3, PL_JG__SAD } /* joininggroup=sad */, - { 4, 7380, 8673, 4, 2, PL_CCC__14 } /* ccc=14 */, - { 0, 8096, 8368, 4, 4, PL_LAO } /* scx=laoo */, - { 3, 6472, 72, 10, 2, PL_WB__LE } /* wordbreak=le */, - { 1, 8026, 6030, 3, 11, PL_PHAISTOS } /* inphaistosdisc */, - { 17, 7136, 6373, 6, 11, PL_INPAHAWHHMONG } /* block=pahawhhmong */, - { 20, 3129, 8368, 17, 3, PL_LAO } /* scriptextensions=lao */, - { 0, 974, 8160, 27, 2, PL_CCC__13 } /* canonicalcombiningclass=ccc13 */, - { 0, 184, 8428, 2, 4, PL_NEWA } /* isnewa */, - { 0, 1426, 2625, 22, 10, PL_INSC__TONELETTER } /* indicsyllabiccategory=toneletter */, - { 0, 1963, 7768, 7, 6, -PL_RADICAL } /* radical=false */, - { 1, 1680, 0, 22, 0, PL_INDICNUMBERFORMS } /* commonindicnumberforms */, - { 0, 7136, 954, 6, 5, PL_INGREEK } /* block=greek */, - { 1, 974, 8696, 24, 3, PL_CCC__AR } /* canonicalcombiningclass=232 */, - { 8, 1202, 7768, 3, 2, -PL_DEP } /* dep=f */, - { 1, 7288, 8368, 7, 3, PL_LAO } /* script=lao */, - { 0, 184, 4104, 2, 5, PL_BAMU } /* isbamum */, - { 39, 3610, 0, 8, 0, PL_BOPO } /* bopomofo */, - { 4, 184, 7443, 2, 4, PL_GRAN } /* isgran */, - { 0, 1503, 2896, 3, 7, PL_INETHIOPIC } /* inethiopic */, - { 0, 954, 0, 5, 0, PL_GREK } /* greek */, - { 0, 7136, 2149, 6, 20, PL_INANATOLIANHIEROGLYPHS } /* block=anatolianhieroglyphs */, - { 0, 6109, 25, 10, 1, PL_CS } /* category=cs */, - { 2, 8240, 1804, 3, 3, PL_BC__RLE } /* bc=rle */, - { 4, 8504, 7562, 3, 7, PL_SB__LE } /* sb=oletter */, - { 1, 8240, 2309, 3, 20, PL_BC__PDF } /* bc=popdirectionalformat */, - { 0, 8798, 3223, 3, 2, -PL_LOE } /* loe=n */, - { 0, 186, 3223, 2, 2, -PL_CE } /* ce=n */, - { 2, 8816, 7714, 3, 3, PL_NV__300 } /* nv=300 */, - { 1, 7136, 8408, 6, 3, PL_INMRO } /* block=mro */, - { 1, 7380, 23, 4, 2, PL_CCC__AL } /* ccc=al */, - { 2, 8240, 25, 4, 1, PL_BC__ES } /* bc=es */, - { 2, 2750, 7951, 19, 5, PL_TERM } /* terminalpunctuation=true */, - { 2, 3658, 0, 16, 0, PL_PE } /* closepunctuation */, - { 8, 7288, 3882, 7, 7, PL_SC__MYMR } /* script=myanmar */, - { 3, 4329, 0, 15, 0, PL_LL } /* lowercaseletter */, - { 15, 7136, 2107, 6, 7, PL_INSINHALA } /* block=sinhala */, - { 6, 1929, 7997, 9, 4, PL_XPOSIXUPPER } /* uppercase=yes */, - { 2, 184, 779, 2, 29, PL_MISCARROWS } /* ismiscellaneoussymbolsandarrows */, - { 1, 974, 8685, 24, 2, PL_CCC__24 } /* canonicalcombiningclass=24 */, - { 0, 7136, 7810, 6, 6, PL_INGOTHIC } /* block=gothic */, - { 0, 7786, 0, 6, 0, PL_CAKM } /* chakma */, - { 0, 1892, 3223, 5, 3, -PL_CASED } /* cased=no */, - { 3, 8006, 7951, 5, 5, PL_CWKCF } /* cwkcf=true */, - { 0, 7224, 8081, 8, 5, PL_XPOSIXPRINT } /* isxposixprint */, - { 0, 7380, 7714, 7, 2, PL_CCC__30 } /* ccc=ccc30 */, - { 8, 7459, 8432, 3, 3, PL_NKO } /* sc=nko */, - { 1, 6890, 7882, 4, 6, PL_INLYDIAN } /* blk=lydian */, - { 0, 7136, 42, 6, 3, PL_CJK } /* block=cjk */, - { 2, 7136, 5232, 6, 13, PL_AEGEANNUMBERS } /* block=aegeannumbers */, - { 0, 8096, 6736, 4, 10, PL_SAUR } /* scx=saurashtra */, - { 4, 8021, 7768, 5, 6, -PL_GREXT } /* grext=false */, - { 0, 5323, 0, 13, 0, PL_ME } /* enclosingmark */, - { 2, 5284, 3223, 13, 2, -PL_CI } /* caseignorable=n */, - { 3, 974, 8655, 27, 2, PL_CCC__33 } /* canonicalcombiningclass=ccc33 */, - { 0, 2859, 7, 18, 3, PL_DT__CAN } /* decompositiontype=can */, - { 7, 7459, 7443, 3, 4, PL_SC__GRAN } /* sc=gran */, - { 0, 7224, 7345, 3, 7, PL_XIDS } /* isxidstart */, - { 0, 7010, 0, 4, 0, PL_ITAL } /* ital */, - { 0, 1876, 3223, 21, 2, -PL_CWL } /* changeswhenlowercased=n */, - { 19, 3129, 7912, 17, 6, PL_TELU } /* scriptextensions=telugu */, - { 1, 6210, 3554, 4, 4, PL_INCARIAN } /* incarian */, - { 14, 2100, 6341, 3, 10, PL_LO } /* isotherletter */, - { 0, 96, 7768, 10, 6, -PL_XPOSIXALPHA } /* alphabetic=false */, - { 3, 3129, 5801, 17, 5, PL_KHMR } /* scriptextensions=khmer */, - { 16, 5609, 0, 12, 0, PL_ALPHABETICPF } /* alphabeticpf */, - { 52, 892, 7951, 17, 5, PL_VS } /* variationselector=true */, - { 0, 184, 959, 2, 5, PL_MUSIC } /* ismusic */, - { 0, 5544, 5219, 13, 7, PL_NV__1000000 } /* numericvalue=1000000 */, - { 0, 4198, 2969, 4, 9, PL_GEORGIANSUP } /* ingeorgiansup */, - { 1, 4314, 3786, 13, 16, PL_JG__MANICHAEANDALETH } /* joininggroup=manichaeandaleth */, - { 68, 6890, 4254, 4, 15, PL_DIACRITICALSEXT } /* blk=diacriticalsext */, - { 4, 8096, 8372, 4, 4, PL_LATN } /* scx=latn */, - { 2, 4757, 7768, 14, 2, -PL_GREXT } /* graphemeextend=f */, - { 3, 7288, 8496, 7, 4, PL_SAMR } /* script=samr */, - { 9, 4554, 807, 14, 2, PL_SB__SP } /* sentencebreak=sp */, - { 12, 2967, 0, 18, 0, PL_GEORGIANSUP } /* georgiansupplement */, - { 9, 8036, 1200, 5, 4, PL_ANY } /* isunicode */, - { 0, 133, 0, 4, 0, PL_M } /* mark */, - { 34, 8816, 7744, 3, 6, PL_NV__700000 } /* nv=700000 */, - { 48, 3129, 2484, 17, 19, PL_EGYP } /* scriptextensions=egyptianhieroglyphs */, - { 0, 7136, 2269, 6, 20, PL_ININSCRIPTIONALPAHLAVI } /* block=inscriptionalpahlavi */, - { 2, 122, 3223, 9, 3, -PL_DIA } /* diacritic=no */, - { 1, 7471, 96, 7, 5, PL_POSIXALPHA } /* isposixalpha */, - { 4, 6713, 8756, 3, 3, PL_IN__6_DOT_3 } /* in=6.3 */, - { 1, 6613, 7823, 3, 5, PL_HATR } /* ishatran */, - { 2, 6917, 5779, 4, 4, PL_INHEBREW } /* inhebrew */, - { 3, 7459, 2360, 3, 4, PL_SC__MAND } /* sc=mand */, - { 34, 8464, 0, 4, 0, PL_PHNX } /* phnx */, - { 6, 184, 316, 2, 33, PL_MISCMATHSYMBOLSB } /* ismiscellaneousmathematicalsymbolsb */, - { 0, 5645, 2088, 10, 3, PL_BC__PDI } /* bidiclass=pdi */, - { 0, 6890, 8388, 4, 4, PL_LISU } /* blk=lisu */, - { 0, 8308, 0, 4, 0, PL_GURU } /* guru */, - { 3, 5544, 7720, 13, 5, PL_NV__40000 } /* numericvalue=40000 */, - { 1, 8288, 2369, 3, 4, PL_DT__VERT } /* dt=vert */, - { 6, 3129, 7611, 17, 4, PL_SOYO } /* scriptextensions=soyo */, - { 1, 7798, 7997, 6, 2, PL_COMPEX } /* compex=y */, - { 29, 3424, 7768, 4, 6, -PL_IDSB } /* idsb=false */, - { 3, 8280, 0, 4, 0, PL_CYRL } /* cyrl */, - { 1, 7336, 0, 4, 0, PL_UGAR } /* ugar */, - { 6, 5645, 8, 10, 2, PL_BC__AN } /* bidiclass=an */, - { 65, 6890, 3738, 4, 9, PL_LATIN1 } /* blk=latin1sup */, - { 2, 808, 0, 18, 0, PL_PHONETICEXT } /* phoneticextensions */, - { 64, 8096, 7200, 4, 8, PL_GURU } /* scx=gurmukhi */, - { 2, 8240, 23, 3, 2, PL_BC__AL } /* bc=al */, - { 2, 184, 5336, 2, 13, PL_GREEKEXT } /* isgreekextended */, - { 3, 8340, 5479, 3, 13, PL_JG__MANICHAEANONE } /* jg=manichaeanone */, - { 1, 5645, 8813, 10, 3, PL_BC__NSM } /* bidiclass=nsm */, - { 2, 2859, 720, 18, 3, PL_DT__ENC } /* decompositiontype=enc */, - { 5, 4757, 3581, 14, 2, PL_GREXT } /* graphemeextend=t */, - { 10, 5192, 3425, 3, 16, PL_IDSB } /* isidsbinaryoperator */, - { 0, 184, 8798, 2, 3, PL_LOE } /* isloe */, - { 0, 2750, 3223, 19, 2, -PL_TERM } /* terminalpunctuation=n */, - { 0, 7478, 7605, 3, 3, PL_SIDD } /* issidd */, - { 0, 779, 0, 29, 0, PL_MISCARROWS } /* miscellaneoussymbolsandarrows */, - { 0, 7345, 3581, 7, 2, PL_IDS } /* idstart=t */, - { 15, 2065, 3223, 21, 2, -PL_NCHAR } /* noncharactercodepoint=n */, - { 0, 4402, 5532, 3, 12, PL_MISCTECHNICAL } /* inmisctechnical */, - { 0, 7459, 7366, 3, 4, PL_SC__BENG } /* sc=beng */, - { 1, 7136, 7034, 6, 9, PL_PALM } /* block=palmyrene */, - { 9, 1426, 3626, 22, 16, PL_INSC__CANTILLATIONMARK } /* indicsyllabiccategory=cantillationmark */, - { 40, 3516, 3223, 10, 2, -PL_XPOSIXSPACE } /* whitespace=n */, - { 0, 8026, 7035, 3, 8, PL_PALM } /* inpalmyrene */, - { 1, 8816, 7756, 3, 2, PL_NV__90 } /* nv=90 */, - { 0, 184, 3610, 2, 11, PL_BOPOMOFOEXT } /* isbopomofoext */, - { 8, 1834, 7768, 21, 2, -PL_CWCF } /* changeswhencasefolded=f */, - { 4, 184, 5765, 2, 12, PL_GRBASE } /* isgraphemebase */, - { 5, 6756, 3223, 10, 2, -PL_SD } /* softdotted=n */, - { 0, 8816, 8176, 3, 4, PL_NV__3_SLASH_20 } /* nv=3/20 */, - { 6, 3755, 1727, 5, 19, PL_EARLYDYNASTICCUNEIFORM } /* inearlydynasticcuneiform */, - { 0, 6554, 4135, 3, 14, PL_BRAI } /* inbraillepatterns */, - { 0, 6263, 1055, 10, 26, PL_LB__CJ } /* linebreak=conditionaljapanesestarter */, - { 0, 184, 43, 3, 35, PL_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatibilityideographssupplement */, - { 0, 8780, 7768, 3, 6, -PL_CWT } /* cwt=false */, - { 9, 7906, 6293, 5, 2, PL_KHMR } /* sc=khmr */, - { 0, 8816, 8901, 3, 2, PL_NV__36 } /* nv=36 */, - { 2, 2229, 5082, 16, 11, PL_MC } /* generalcategory=spacingmark */, - { 6, 6890, 8400, 4, 4, PL_INMIAO } /* blk=miao */, - { 19, 5134, 8082, 3, 4, PL_XPOSIXPRINT } /* isprint */, - { 4, 7840, 893, 3, 17, PL_INVS } /* isvariationselectors */, - { 20, 5645, 427, 10, 2, PL_BC__ES } /* bidiclass=es */, - { 0, 5134, 850, 3, 9, PL_CO } /* isprivateuse */, - { 0, 6263, 534, 10, 2, PL_LB__NS } /* linebreak=ns */, - { 5, 4402, 3899, 3, 15, PL_MYANMAREXTB } /* inmyanmarextendedb */, - { 0, 8460, 0, 4, 0, PL_PHLP } /* phlp */, - { 0, 6890, 7810, 4, 6, PL_INGOTHIC } /* blk=gothic */, - { 0, 76, 7096, 2, 3, PL_NT__NU } /* nt=nu */, - { 2, 6263, 5772, 10, 5, PL_LB__EB } /* linebreak=ebase */, - { 1, 6890, 4300, 5, 14, PL_INIMPERIALARAMAIC } /* blk=imperialaramaic */, - { 24, 18, 3223, 2, 2, -PL_RI } /* ri=n */, - { 1, 8011, 206, 3, 2, PL_PI } /* gc=pi */, - { 6, 1189, 0, 2, 0, PL_LT } /* lt */, - { 0, 3946, 0, 16, 0, PL_STERM } /* sentenceterminal */, - { 1, 3543, 0, 17, 0, PL_SMALLFORMS } /* smallformvariants */, - { 2, 5825, 0, 7, 0, PL_MAHJONG } /* mahjong */, - { 1, 184, 3738, 2, 9, PL_LATIN1 } /* islatin1sup */, - { 0, 2134, 7768, 3, 2, -PL_XPOSIXXDIGIT } /* hex=f */, - { 7, 8096, 7351, 4, 4, PL_TALE } /* scx=tale */, - { 0, 974, 8164, 24, 2, PL_CCC__15 } /* canonicalcombiningclass=15 */, - { 2, 184, 6120, 2, 11, PL_DOMINO } /* isdominotiles */, - { 40, 8096, 8408, 4, 3, PL_MRO } /* scx=mro */, - { 0, 7459, 8192, 3, 4, PL_SC__ADLM } /* sc=adlm */, - { 0, 7478, 6747, 3, 9, PL_SMALLFORMS } /* issmallforms */, - { 32, 5544, 8903, 13, 2, PL_NV__38 } /* numericvalue=38 */, - { 0, 6713, 8867, 3, 3, PL_IN__5_DOT_1 } /* in=v51 */, - { 2, 7136, 3965, 6, 13, PL_MATHOPERATORS } /* block=mathoperators */, - { 0, 1133, 3223, 26, 2, -PL_PCM } /* prependedconcatenationmark=n */, - { 38, 2100, 7557, 4, 5, PL_OLCK } /* isolchiki */, - { 2, 184, 8432, 2, 4, PL_NKO } /* isnkoo */, - { 0, 8504, 69, 3, 2, PL_SB__UP } /* sb=up */, - { 1, 8096, 7912, 4, 4, PL_TELU } /* scx=telu */, - { 0, 4554, 1621, 14, 6, PL_SB__FO } /* sentencebreak=format */, - { 7, 2108, 1568, 4, 4, PL_INHANGUL } /* inhangul */, - { 0, 5375, 7, 12, 1, PL_JT__C } /* joiningtype=c */, - { 6, 7457, 6998, 5, 9, PL_INSC__NONJOINER } /* insc=nonjoiner */, - { 0, 3424, 7768, 17, 6, -PL_IDSB } /* idsbinaryoperator=false */, - { 0, 7380, 1484, 4, 2, PL_CCC__BR } /* ccc=br */, - { 7, 3129, 8046, 17, 5, PL_LIMB } /* scriptextensions=limbu */, - { 0, 7459, 7513, 3, 7, PL_SC__MAND } /* sc=mandaic */, - { 5, 6484, 0, 3, 0, PL_IDC } /* idc */, - { 29, 6736, 0, 10, 0, PL_SAUR } /* saurashtra */, - { 4, 6706, 8723, 10, 3, PL_IN__4 } /* presentin=4.0 */, - { 5, 7288, 6406, 7, 11, PL_SORA } /* script=sorasompeng */, - { 3, 8021, 3223, 5, 2, -PL_GREXT } /* grext=n */, - { 4, 4284, 3577, 14, 6, PL_GCB__T } /* hangulsyllabletype=t */, - { 6, 8340, 4953, 3, 14, PL_JG__MANICHAEANHETH } /* jg=manichaeanheth */, - { 1, 8096, 6917, 4, 9, PL_QAAI } /* scx=inherited */, - { 4, 6263, 8925, 10, 2, PL_LB__H3 } /* linebreak=h3 */, - { 4, 7459, 2408, 3, 6, PL_BRAH } /* sc=brahmi */, - { 38, 3424, 7997, 4, 4, PL_IDSB } /* idsb=yes */, - { 5, 7459, 2271, 5, 18, PL_PHLI } /* sc=inscriptionalpahlavi */, - { 1, 3322, 0, 17, 0, PL_CYRILLICEXTA } /* cyrillicextendeda */, - { 8, 7459, 494, 3, 3, PL_SC__HAN } /* sc=han */, - { 3, 8071, 0, 5, 0, PL_OSGE } /* osage */, - { 6, 8011, 699, 3, 6, PL_N } /* gc=number */, - { 0, 7136, 3147, 6, 18, PL_TAIXUANJING } /* block=taixuanjingsymbols */, - { 40, 7840, 893, 3, 16, PL_VS } /* isvariationselector */, - { 3, 4314, 5873, 13, 12, PL_JG__MALAYALAMNNA } /* joininggroup=malayalamnna */, - { 1, 4314, 8810, 13, 3, PL_JG__MIM } /* joininggroup=mim */, - { 0, 3129, 7590, 17, 7, PL_SHRD } /* scriptextensions=sharada */, - { 2, 7136, 7016, 6, 9, PL_INOLDPERMIC } /* block=oldpermic */, - { 0, 5544, 8901, 13, 2, PL_NV__36 } /* numericvalue=36 */, - { 0, 3754, 0, 7, 0, PL_LINB } /* linearb */, - { 8, 4402, 3883, 3, 6, PL_INMYANMAR } /* inmyanmar */, - { 0, 7457, 2189, 5, 20, PL_INSC__CONSONANTPLACEHOLDER } /* insc=consonantplaceholder */, - { 0, 184, 43, 3, 15, PL_CJKCOMPAT } /* iscjkcompatibility */, - { 0, 8196, 8726, 4, 3, PL_AGE__4_DOT_1 } /* age=4.1 */, - { 1, 8096, 7611, 4, 4, PL_SOYO } /* scx=soyo */, - { 1, 8096, 8444, 4, 4, PL_OLCK } /* scx=olck */, - { 0, 8240, 8801, 3, 3, PL_BC__LRE } /* bc=lre */, - { 4, 4314, 4359, 13, 15, PL_JG__MANICHAEANGIMEL } /* joininggroup=manichaeangimel */, - { 0, 7288, 7846, 7, 6, PL_SC__KTHI } /* script=kaithi */, - { 0, 8424, 0, 4, 0, PL_NBAT } /* nbat */, - { 8, 6890, 4771, 4, 14, PL_INGREEK } /* blk=greekandcoptic */, - { 0, 8816, 8741, 3, 3, PL_NV__5_SLASH_6 } /* nv=5/6 */, - { 15, 7858, 0, 4, 0, PL_KHOJ } /* khoj */, - { 68, 6890, 7387, 4, 7, PL_CJKEXTA } /* blk=cjkexta */, - { 1, 8096, 7443, 4, 4, PL_GRAN } /* scx=gran */, - { 0, 8096, 6806, 4, 4, PL_WARA } /* scx=wara */, - { 1, 7994, 7952, 4, 4, PL_IDC } /* idc=true */, - { 8, 5645, 1804, 10, 3, PL_BC__RLE } /* bidiclass=rle */, - { 7, 6890, 6908, 4, 9, PL_EMOTICONS } /* blk=emoticons */, - { 0, 7288, 8300, 7, 4, PL_SC__GREK } /* script=grek */, - { 1, 690, 0, 16, 0, PL_CUNEIFORMNUMBERS } /* cuneiformnumbers */, - { 0, 184, 1543, 2, 15, PL_GEOMETRICSHAPES } /* isgeometricshapes */, - { 1, 1448, 6431, 5, 8, PL_SUPERANDSUB } /* insuperandsub */, - { 1, 6890, 7604, 4, 7, PL_INSIDDHAM } /* blk=siddham */, - { 8, 7136, 3290, 6, 4, PL_UCAS } /* block=ucas */, - { 16, 8504, 7966, 3, 5, PL_SB__AT } /* sb=aterm */, - { 1, 8816, 7744, 3, 5, PL_NV__70000 } /* nv=70000 */, - { 0, 7288, 7780, 7, 4, PL_CARI } /* script=cari */, - { 67, 2360, 0, 4, 0, PL_MAND } /* mand */, - { 0, 4449, 8256, 4, 3, PL_COMPEX } /* nfcqc=n */, - { 24, 184, 2636, 2, 4, PL_MONG } /* ismong */, - { 6, 4314, 5019, 13, 4, PL_JG__TETH } /* joininggroup=teth */, - { 81, 8816, 7714, 3, 6, PL_NV__300000 } /* nv=300000 */, - { 0, 2521, 0, 2, 0, PL_PF } /* pf */, - { 32, 7136, 2805, 6, 18, PL_HALFMARKS } /* block=combininghalfmarks */, - { 0, 7136, 6826, 6, 10, PL_YIRADICALS } /* block=yiradicals */, - { 0, 1184, 0, 25, 0, PL_DI } /* defaultignorablecodepoint */, - { 48, 5557, 0, 13, 0, PL_PATSYN } /* patternsyntax */, - { 0, 8376, 415, 3, 11, PL_LB__ID } /* lb=ideographic */, - { 1, 8816, 8646, 3, 2, PL_NV__29 } /* nv=29 */, - { 22, 5968, 1029, 3, 26, PL_OCR } /* inopticalcharacterrecognition */, - { 17, 7136, 8126, 6, 5, PL_VSSUP } /* block=vssup */, - { 0, 7136, 7611, 6, 7, PL_INSOYOMBO } /* block=soyombo */, - { 0, 7136, 7912, 6, 6, PL_INTELUGU } /* block=telugu */, - { 0, 7459, 2408, 3, 4, PL_BRAH } /* sc=brah */, - { 0, 6890, 1724, 4, 22, PL_EARLYDYNASTICCUNEIFORM } /* blk=earlydynasticcuneiform */, - { 1, 1346, 3500, 4, 5, PL_INGRANTHA } /* ingrantha */, - { 1, 7459, 7192, 3, 8, PL_SC__GUJR } /* sc=gujarati */, - { 0, 2859, 2369, 18, 4, PL_DT__VERT } /* decompositiontype=vert */, - { 3, 7288, 7320, 7, 8, PL_TFNG } /* script=tifinagh */, - { 1, 7288, 2484, 7, 19, PL_EGYP } /* script=egyptianhieroglyphs */, - { 0, 7288, 7312, 7, 4, PL_SC__TAGB } /* script=tagb */, - { 0, 7380, 7941, 7, 2, PL_CCC__11 } /* ccc=ccc11 */, - { 1, 7288, 2531, 7, 4, PL_SC__MULT } /* script=mult */, - { 0, 8288, 7, 3, 3, PL_DT__CAN } /* dt=can */, - { 0, 3129, 954, 17, 5, PL_GREK } /* scriptextensions=greek */, - { 12, 5544, 8184, 13, 4, PL_NV__5_SLASH_12 } /* numericvalue=5/12 */, - { 16, 4314, 3818, 13, 16, PL_JG__MANICHAEANSAMEKH } /* joininggroup=manichaeansamekh */, - { 0, 5645, 3581, 5, 2, PL_BIDIC } /* bidic=t */, - { 7, 6713, 8852, 3, 3, PL_IN__3_DOT_1 } /* in=v31 */, - { 2, 8096, 78, 4, 4, PL_ARAB } /* scx=arab */, - { 4, 7136, 3356, 6, 17, PL_CYRILLICEXTC } /* block=cyrillicextendedc */, - { 4, 8096, 7025, 4, 9, PL_ORKH } /* scx=oldturkic */, - { 1, 7224, 6484, 3, 3, PL_XIDC } /* isxidc */, - { 2, 7136, 7443, 6, 7, PL_INGRANTHA } /* block=grantha */, - { 0, 184, 1283, 3, 9, PL_CJKSYMBOLS } /* iscjksymbols */, - { 0, 4239, 3223, 4, 2, -PL_DASH } /* dash=n */, - { 12, 7288, 8416, 7, 4, PL_SC__MYMR } /* script=mymr */, - { 0, 7288, 7632, 7, 7, PL_SC__TGLG } /* script=tagalog */, - { 3, 6890, 1680, 4, 22, PL_INDICNUMBERFORMS } /* blk=commonindicnumberforms */, - { 0, 6890, 1001, 4, 11, PL_ENCLOSEDCJK } /* blk=enclosedcjk */, - { 0, 7136, 7900, 6, 6, PL_INREJANG } /* block=rejang */, - { 2, 8096, 7043, 4, 4, PL_PAUC } /* scx=pauc */, - { 18, 974, 6556, 24, 10, PL_CCC__BR } /* canonicalcombiningclass=belowright */, - { 0, 184, 6881, 2, 9, PL_BHKS } /* isbhaiksuki */, - { 0, 6890, 1960, 4, 14, PL_CJKRADICALSSUP } /* blk=cjkradicalssup */, - { 0, 6890, 6596, 4, 10, PL_COMPATJAMO } /* blk=compatjamo */, - { 2, 7288, 7780, 7, 6, PL_CARI } /* script=carian */, - { 0, 6890, 2967, 4, 18, PL_GEORGIANSUP } /* blk=georgiansupplement */, - { 0, 1417, 1106, 9, 2, PL_SK } /* category=sk */, - { 1, 8786, 1, 3, 1, PL_EA__N } /* ea=n */, - { 123, 7459, 8220, 3, 4, PL_SC__ARMN } /* sc=armn */, - { 0, 4449, 8256, 4, 4, PL_COMPEX } /* nfcqc=no */, - { 0, 7459, 8396, 3, 4, PL_MERC } /* sc=merc */, - { 2, 7478, 3084, 7, 9, PL_ZS } /* isspaceseparator */, - { 0, 1358, 7997, 20, 4, PL_CE } /* compositionexclusion=yes */, - { 0, 4542, 7640, 3, 6, PL_LANA } /* istaitham */, - { 1, 8783, 7768, 3, 2, -PL_CWU } /* cwu=f */, - { 2, 7459, 2674, 3, 4, PL_SUND } /* sc=sund */, - { 0, 6483, 7997, 4, 4, PL_XIDC } /* xidc=yes */, - { 1, 3129, 2107, 17, 4, PL_SINH } /* scriptextensions=sinh */, - { 0, 7459, 7569, 3, 7, PL_OSMA } /* sc=osmanya */, - { 8, 3129, 7192, 17, 8, PL_GUJR } /* scriptextensions=gujarati */, - { 5, 1701, 7997, 2, 2, PL_SD } /* sd=y */, - { 7, 7288, 7660, 7, 7, PL_SC__TIRH } /* script=tirhuta */, - { 0, 8196, 8765, 4, 3, PL_AGE__8 } /* age=8.0 */, - { 48, 7288, 7870, 7, 4, PL_LEPC } /* script=lepc */, - { 1, 8096, 6696, 4, 10, PL_PHNX } /* scx=phoenician */, - { 10, 5544, 7708, 13, 2, PL_NV__21 } /* numericvalue=21 */, - { 28, 184, 7240, 2, 8, PL_JAMOEXTB } /* isjamoextb */, - { 0, 7136, 8368, 6, 3, PL_INLAO } /* block=lao */, - { 7, 184, 750, 2, 22, PL_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsup */, - { 0, 3129, 78, 17, 6, PL_ARAB } /* scriptextensions=arabic */, - { 2, 184, 8931, 2, 2, PL_L_AMP_ } /* isl& */, - { 6, 117, 448, 3, 31, PL_IDEOGRAPHICSYMBOLS } /* inideographicsymbolsandpunctuation */, - { 0, 6890, 3057, 4, 18, PL_ORNAMENTALDINGBATS } /* blk=ornamentaldingbats */, - { 1, 8816, 7709, 3, 2, PL_NV__16 } /* nv=16 */, - { 0, 8240, 18, 3, 1, PL_BC__R } /* bc=r */, - { 1, 8816, 8164, 3, 4, PL_NV__15_SLASH_2 } /* nv=15/2 */, - { 72, 6219, 0, 11, 0, PL_JOINC } /* joincontrol */, - { 3, 2229, 0, 17, 1, PL_LU } /* generalcategory=lu */, - { 0, 6706, 7702, 10, 1, PL_IN__2 } /* presentin=2 */, - { 0, 7136, 7956, 6, 5, PL_INADLAM } /* block=adlam */, - { 3, 7226, 7986, 6, 5, PL_XPOSIXBLANK } /* xposixblank */, - { 18, 6554, 7145, 3, 7, PL_INBUGINESE } /* inbuginese */, - { 0, 6989, 0, 9, 0, PL_TALU } /* newtailue */, - { 1, 2128, 0, 21, 0, PL_YIJING } /* yijinghexagramsymbols */, - { 0, 7288, 8588, 7, 4, PL_SC__YI } /* script=yiii */, - { 0, 7288, 8264, 7, 4, PL_CANS } /* script=cans */, - { 1, 184, 7971, 2, 5, PL_BATK } /* isbatak */, - { 4, 8196, 7732, 4, 1, PL_AGE__5 } /* age=5 */, - { 72, 6890, 479, 4, 31, PL_MATHALPHANUM } /* blk=mathematicalalphanumericsymbols */, - { 0, 1887, 7768, 5, 2, -PL_XPOSIXLOWER } /* lower=f */, - { 5, 4314, 4384, 13, 5, PL_JG__SADHE } /* joininggroup=sadhe */, - { 17, 3914, 0, 16, 0, PL_PO } /* otherpunctuation */, - { 1, 2229, 2169, 16, 20, PL_PC } /* generalcategory=connectorpunctuation */, - { 16, 1426, 5191, 24, 14, PL_INSC__INVISIBLESTACKER } /* indicsyllabiccategory=invisiblestacker */, - { 0, 7288, 7450, 7, 7, PL_SC__HANO } /* script=hanunoo */, - { 1, 1855, 7997, 21, 4, PL_CWCM } /* changeswhencasemapped=yes */, - { 1, 7344, 7997, 4, 4, PL_XIDS } /* xids=yes */, - { 0, 1746, 36, 21, 1, PL_GCB__T } /* graphemeclusterbreak=t */, - { 0, 6210, 6587, 3, 9, PL_CJKSTROKES } /* incjkstrokes */, - { 14, 6008, 0, 4, 0, PL_HUNG } /* hung */, - { 0, 4314, 4995, 13, 14, PL_JG__MANICHAEANRESH } /* joininggroup=manichaeanresh */, - { 0, 6890, 3754, 4, 16, PL_LINEARBIDEOGRAMS } /* blk=linearbideograms */, - { 1, 7288, 8245, 8, 3, PL_BHKS } /* script=bhks */, - { 6, 8101, 0, 5, 0, PL_STERM } /* sterm */, - { 0, 6613, 8321, 3, 3, PL_HLUW } /* ishluw */, - { 0, 4284, 4026, 14, 16, PL_GCB__L } /* hangulsyllabletype=leadingjamo */, - { 2, 7478, 1636, 3, 22, PL_SUPPUNCTUATION } /* issupplementalpunctuation */, - { 16, 6890, 7569, 4, 7, PL_INOSMANYA } /* blk=osmanya */, - { 26, 5657, 3223, 5, 2, -PL_BIDIM } /* bidim=n */, - { 0, 1402, 1704, 4, 20, PL_DIACRITICALSFORSYMBOLS } /* indiacriticalsforsymbols */, - { 0, 8504, 33, 3, 2, PL_SB__SE } /* sb=se */, - { 2, 8420, 0, 4, 0, PL_NARB } /* narb */, - { 0, 1401, 0, 4, 0, PL_SIND } /* sind */, - { 0, 184, 3, 3, 1, PL_CF } /* iscf */, - { 0, 3424, 3581, 4, 2, PL_IDSB } /* idsb=t */, - { 0, 6890, 6944, 4, 9, PL_LATINEXTC } /* blk=latinextc */, - { 24, 6613, 4285, 3, 14, PL_INHANGUL } /* ishangulsyllables */, - { 0, 6109, 3659, 10, 15, PL_PE } /* category=closepunctuation */, - { 82, 8777, 0, 3, 0, PL_CWL } /* cwl */, - { 0, 183, 0, 34, 0, PL_MISCPICTOGRAPHS } /* miscellaneoussymbolsandpictographs */, - { 2, 7288, 3611, 8, 3, PL_SC__BOPO } /* script=bopo */, - { 0, 1929, 7951, 5, 5, PL_XPOSIXUPPER } /* upper=true */, - { 0, 2229, 1013, 17, 5, PL_L } /* generalcategory=letter */, - { 0, 6890, 3390, 4, 16, PL_ETHIOPICEXT } /* blk=ethiopicextended */, - { 0, 7459, 8436, 3, 4, PL_NSHU } /* sc=nshu */, - { 1, 8096, 8106, 4, 5, PL_TALE } /* scx=taile */, - { 7, 6613, 6009, 3, 3, PL_HUNG } /* ishung */, - { 3, 974, 8639, 24, 3, PL_CCC__118 } /* canonicalcombiningclass=118 */, - { 6, 8816, 7756, 3, 6, PL_NV__900000 } /* nv=900000 */, - { 0, 7226, 1887, 6, 5, PL_XPOSIXLOWER } /* xposixlower */, - { 0, 8816, 1335, 3, 3, PL_NV__NAN } /* nv=nan */, - { 4, 1448, 1791, 3, 21, PL_MODIFIERLETTERS } /* inspacingmodifierletters */, - { 3, 7288, 6736, 7, 10, PL_SAUR } /* script=saurashtra */, - { 2, 4813, 0, 7, 0, PL_KANASUP } /* kanasup */, - { 0, 184, 4883, 2, 14, PL_LATINEXTE } /* islatinextendede */, - { 15, 7459, 7520, 3, 7, PL_MARC } /* sc=marchen */, - { 2, 8304, 0, 4, 0, PL_GUJR } /* gujr */, - { 5, 1503, 3391, 3, 16, PL_ETHIOPICEXTA } /* inethiopicextendeda */, - { 0, 8096, 7653, 4, 7, PL_TIBT } /* scx=tibetan */, - { 2, 7459, 7912, 3, 4, PL_SC__TELU } /* sc=telu */, - { 0, 6890, 7429, 4, 7, PL_DSRT } /* blk=deseret */, - { 0, 8894, 3201, 3, 18, PL_VO__TU } /* vo=transformedupright */, - { 0, 8344, 0, 4, 0, PL_JT__L } /* jt=l */, - { 32, 7136, 6439, 6, 11, PL_INSYLOTINAGRI } /* block=sylotinagri */, - { 0, 7288, 7520, 7, 7, PL_MARC } /* script=marchen */, - { 0, 2841, 0, 6, 0, PL_COPT } /* coptic */, - { 64, 8009, 0, 2, 0, PL_CF } /* cf */, - { 14, 7288, 1108, 8, 4, PL_BATK } /* script=batak */, - { 2, 4198, 2969, 4, 16, PL_GEORGIANSUP } /* ingeorgiansupplement */, - { 1, 7689, 8233, 3, 3, PL_AVST } /* isavst */, - { 1, 6890, 3866, 4, 16, PL_MISCMATHSYMBOLSB } /* blk=miscmathsymbolsb */, - { 1, 4314, 218, 13, 2, PL_JG__PE } /* joininggroup=pe */, - { 0, 8816, 5219, 3, 3, PL_NV__100 } /* nv=100 */, - { 63, 3424, 7768, 4, 2, -PL_IDSB } /* idsb=f */, - { 1, 8816, 7720, 3, 1, PL_NV__4 } /* nv=4 */, - { 1, 974, 3254, 24, 13, PL_CCC__202 } /* canonicalcombiningclass=attachedbelow */, - { 32, 2541, 0, 10, 0, PL_JAMO } /* hanguljamo */, - { 3, 5544, 7756, 13, 3, PL_NV__900 } /* numericvalue=900 */, - { 18, 6890, 7618, 4, 7, PL_SUPPUAA } /* blk=suppuaa */, - { 0, 7136, 7492, 6, 7, PL_INKANNADA } /* block=kannada */, - { 10, 7681, 0, 7, 0, PL_ZZZZ } /* unknown */, - { 10, 7136, 1658, 6, 19, PL_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatideographs */, - { 0, 4010, 0, 4, 0, PL_TANG } /* tang */, - { 8, 974, 4976, 24, 2, PL_CCC__7 } /* canonicalcombiningclass=nk */, - { 16, 7882, 0, 6, 0, PL_LYDI } /* lydian */, - { 0, 7224, 3521, 8, 5, PL_XPOSIXSPACE } /* isxposixspace */, - { 0, 6263, 1083, 10, 2, PL_LB__LF } /* linebreak=lf */, - { 4, 6713, 7702, 3, 1, PL_IN__2 } /* in=2 */, - { 0, 7288, 8528, 7, 4, PL_SC__SYRC } /* script=syrc */, - { 68, 3129, 8061, 17, 5, PL_OGAM } /* scriptextensions=ogham */, - { 1, 8276, 0, 4, 0, PL_CWCM } /* cwcm */, - { 0, 5544, 7714, 13, 3, PL_NV__300 } /* numericvalue=300 */, - { 1, 7478, 837, 3, 27, PL_SUPPUAA } /* issupplementaryprivateuseareaa */, - { 17, 5544, 8762, 13, 3, PL_NV__7_SLASH_8 } /* numericvalue=7/8 */, - { 10, 21, 4813, 2, 14, PL_KANASUP } /* inkanasupplement */, - { 0, 8011, 7, 4, 1, PL_SC } /* gc=sc */, - { 6, 5544, 8640, 13, 2, PL_NV__18 } /* numericvalue=18 */, - { 1, 8096, 4105, 5, 3, PL_BAMU } /* scx=bamu */, - { 11, 7345, 7768, 7, 6, -PL_IDS } /* idstart=false */, - { 0, 3129, 8448, 17, 4, PL_ORKH } /* scriptextensions=orkh */, - { 29, 7288, 8548, 7, 4, PL_TFNG } /* script=tfng */, - { 0, 6890, 6646, 4, 10, PL_MISCARROWS } /* blk=miscarrows */, - { 1, 0, 0, 34, 0, PL_UCAS } /* unifiedcanadianaboriginalsyllabics */, - { 1, 7459, 7604, 3, 7, PL_SIDD } /* sc=siddham */, - { 0, 1876, 3223, 21, 3, -PL_CWL } /* changeswhenlowercased=no */, - { 2, 6263, 34, 10, 2, PL_LB__EX } /* linebreak=ex */, - { 3, 1402, 3069, 4, 6, PL_DINGBATS } /* indingbats */, - { 5, 7344, 0, 4, 0, PL_XIDS } /* xids */, - { 0, 8340, 6072, 3, 4, PL_JG__NOON } /* jg=noon */, - { 4, 7136, 7061, 6, 9, PL_INSAMARITAN } /* block=samaritan */, - { 0, 5544, 7720, 13, 1, PL_NV__4 } /* numericvalue=4 */, - { 2, 7380, 8897, 4, 2, PL_CCC__19 } /* ccc=19 */, - { 76, 2750, 7768, 19, 6, -PL_TERM } /* terminalpunctuation=false */, - { 7, 8288, 568, 3, 2, PL_DT__NB } /* dt=nb */, - { 136, 7248, 0, 8, 0, PL_JAVA } /* javanese */, - { 0, 8376, 6186, 3, 11, PL_LB__IN } /* lb=inseparable */, - { 3, 8572, 698, 3, 2, PL_WB__MN } /* wb=mn */, - { 0, 7459, 2249, 3, 4, PL_SC__GLAG } /* sc=glag */, - { 6, 8204, 7951, 4, 5, PL_POSIXXDIGIT } /* ahex=true */, - { 12, 5192, 416, 3, 31, PL_INIDC } /* isideographicdescriptioncharacters */, - { 2, 184, 122, 2, 9, PL_DIA } /* isdiacritic */, - { 1, 4314, 5849, 13, 12, PL_JG__MALAYALAMLLA } /* joininggroup=malayalamlla */, - { 1, 8300, 0, 4, 0, PL_GREK } /* grek */, - { 0, 8096, 7583, 4, 7, PL_PHAG } /* scx=phagspa */, - { 68, 7288, 6882, 8, 8, PL_BHKS } /* script=bhaiksuki */, - { 0, 6109, 3, 10, 1, PL_CF } /* category=cf */, - { 96, 2985, 3223, 4, 2, -PL_IDST } /* idst=n */, - { 0, 7226, 3521, 6, 5, PL_XPOSIXSPACE } /* xposixspace */, - { 0, 5645, 2289, 10, 11, PL_BC__L } /* bidiclass=lefttoright */, - { 0, 8816, 8907, 3, 2, PL_NV__44 } /* nv=44 */, - { 0, 2229, 3658, 16, 16, PL_PE } /* generalcategory=closepunctuation */, - { 4, 6890, 4644, 4, 15, PL_INZANABAZARSQUARE } /* blk=zanabazarsquare */, - { 10, 3129, 6373, 17, 11, PL_HMNG } /* scriptextensions=pahawhhmong */, - { 4, 184, 1797, 2, 4, PL_MODI } /* ismodi */, - { 1, 3129, 8046, 17, 4, PL_LIMB } /* scriptextensions=limb */, - { 0, 5134, 809, 3, 10, PL_PHONETICEXT } /* isphoneticext */, - { 0, 7288, 1540, 7, 4, PL_SC__PHAG } /* script=phag */, - { 0, 4402, 2046, 4, 12, PL_MEETEIMAYEKEXT } /* inmeeteimayekext */, - { 0, 148, 0, 35, 0, PL_DIACRITICALSSUP } /* combiningdiacriticalmarkssupplement */, - { 0, 8096, 8568, 4, 3, PL_VAI } /* scx=vai */, - { 49, 8376, 7828, 3, 2, PL_LB__HY } /* lb=hy */, - { 0, 7136, 1724, 6, 22, PL_EARLYDYNASTICCUNEIFORM } /* block=earlydynasticcuneiform */, - { 0, 184, 8596, 2, 4, PL_ZANB } /* iszanb */, - { 12, 5544, 7726, 13, 2, PL_NV__43 } /* numericvalue=43 */, - { 1, 6263, 3526, 10, 17, PL_RI } /* linebreak=regionalindicator */, - { 3, 7288, 2787, 7, 8, PL_CHER } /* script=cherokee */, - { 1, 5693, 0, 12, 0, PL_CYRILLICEXTB } /* cyrillicextb */, - { 0, 8596, 0, 4, 0, PL_ZANB } /* zanb */, - { 1, 1635, 0, 23, 0, PL_SUPPUNCTUATION } /* supplementalpunctuation */, - { 3, 6776, 0, 10, 0, PL_SUPARROWSB } /* suparrowsb */, - { 0, 7380, 8168, 4, 2, PL_CCC__17 } /* ccc=17 */, - { 1, 3610, 0, 11, 0, PL_BOPOMOFOEXT } /* bopomofoext */, - { 0, 3424, 7951, 4, 5, PL_IDSB } /* idsb=true */, - { 0, 4479, 1, 15, 1, PL_NFKCQC__N } /* nfkcquickcheck=n */, - { 2, 974, 3743, 24, 1, PL_CCC__1 } /* canonicalcombiningclass=1 */, - { 1, 5253, 0, 5, 0, PL_XPOSIXDIGIT } /* digit */, - { 2, 5968, 4495, 3, 14, PL_NARB } /* inoldnortharabian */, - { 0, 6890, 1081, 4, 26, PL_HALFANDFULLFORMS } /* blk=halfwidthandfullwidthforms */, - { 1, 217, 8077, 7, 4, PL_PATWS } /* _perl_patws */, - { 0, 974, 7944, 27, 2, PL_CCC__12 } /* canonicalcombiningclass=ccc12 */, - { 50, 8816, 7756, 3, 3, PL_NV__900 } /* nv=900 */, - { 0, 6890, 3994, 4, 9, PL_SYRIACSUP } /* blk=syriacsup */, - { 0, 7136, 2712, 6, 19, PL_SUPARROWSB } /* block=supplementalarrowsb */, - { 0, 2229, 4330, 17, 14, PL_LL } /* generalcategory=lowercaseletter */, - { 1, 8376, 3658, 3, 16, PL_LB__CL } /* lb=closepunctuation */, - { 0, 8340, 5741, 3, 12, PL_JG__FINALSEMKATH } /* jg=finalsemkath */, - { 1, 4134, 0, 4, 0, PL_BRAI } /* brai */, - { 0, 7457, 4164, 5, 15, PL_INSC__CONSONANTKILLER } /* insc=consonantkiller */, - { 0, 8096, 1540, 4, 4, PL_PHAG } /* scx=phag */, - { 0, 8096, 3674, 4, 7, PL_CPRT } /* scx=cypriot */, - { 7, 7224, 96, 8, 5, PL_XPOSIXALPHA } /* isxposixalpha */, - { 8, 1159, 0, 25, 0, PL_CWKCF } /* changeswhennfkccasefolded */, - { 0, 3129, 7639, 17, 7, PL_LANA } /* scriptextensions=taitham */, - { 48, 8096, 5801, 4, 5, PL_KHMR } /* scx=khmer */, - { 0, 974, 8699, 24, 3, PL_CCC__DB } /* canonicalcombiningclass=233 */, - { 2, 8252, 0, 4, 0, PL_BUHD } /* buhd */, - { 0, 1426, 4058, 22, 16, PL_INSC__VOWELINDEPENDENT } /* indicsyllabiccategory=vowelindependent */, - { 2, 7906, 6629, 6, 7, PL_KHAR } /* sc=kharoshthi */, - { 34, 5544, 7756, 13, 4, PL_NV__9000 } /* numericvalue=9000 */, - { 0, 1612, 0, 23, 0, PL_SHORTHANDFORMATCONTROLS } /* shorthandformatcontrols */, - { 0, 8121, 7768, 5, 6, -PL_UIDEO } /* uideo=false */, - { 0, 184, 7882, 2, 6, PL_LYDI } /* islydian */, - { 67, 4554, 7966, 14, 5, PL_SB__AT } /* sentencebreak=aterm */, - { 10, 8248, 7, 4, 1, PL_BPT__C } /* bpt=c */, - { 1, 6890, 5245, 4, 5, PL_ASCII } /* blk=ascii */, - { 1, 7288, 8544, 7, 4, PL_TAVT } /* script=tavt */, - { 10, 6263, 1392, 10, 9, PL_LB__SG } /* linebreak=surrogate */, - { 2, 184, 7423, 3, 6, PL_CJKEXTF } /* iscjkextf */, - { 1, 5134, 1340, 4, 2, PL_PAUC } /* ispauc */, - { 3, 184, 3882, 2, 7, PL_MYMR } /* ismyanmar */, - { 40, 184, 6120, 2, 6, PL_DOMINO } /* isdomino */, - { 2, 7380, 8617, 7, 2, PL_CCC__31 } /* ccc=ccc31 */, - { 8, 7136, 7918, 6, 6, PL_INTHAANA } /* block=thaana */, - { 18, 8572, 2284, 3, 2, PL_LB__HL } /* wb=hl */, - { 19, 6706, 6796, 10, 10, PL_AGE__NA } /* presentin=unassigned */, - { 38, 8816, 7710, 3, 4, PL_NV__6000 } /* nv=6000 */, - { 11, 1354, 3581, 24, 2, PL_COMPEX } /* fullcompositionexclusion=t */, - { 6, 6796, 0, 10, 0, PL_CN } /* unassigned */, - { 2, 8196, 8738, 4, 3, PL_AGE__5_DOT_2 } /* age=5.2 */, - { 1, 184, 4134, 2, 7, PL_BRAI } /* isbraille */, - { 10, 2369, 18, 20, 1, PL_VO__R } /* verticalorientation=r */, - { 0, 5192, 4300, 3, 14, PL_ARMI } /* isimperialaramaic */, - { 0, 8941, 0, 2, 0, PL_ZS } /* zs */, - { 2, 974, 7727, 27, 2, PL_CCC__32 } /* canonicalcombiningclass=ccc32 */, - { 0, 4314, 3492, 13, 17, PL_JG__MANICHAEANTHAMEDH } /* joininggroup=manichaeanthamedh */, - { 11, 3129, 8544, 17, 4, PL_TAVT } /* scriptextensions=tavt */, - { 43, 1503, 5718, 3, 11, PL_ETHIOPICEXTA } /* inethiopicexta */, - { 1, 184, 2877, 2, 18, PL_DEVANAGARIEXT } /* isdevanagariextended */, - { 1, 4314, 4374, 13, 15, PL_JG__MANICHAEANSADHE } /* joininggroup=manichaeansadhe */, - { 0, 8288, 974, 3, 9, PL_DT__CAN } /* dt=canonical */, - { 3, 6613, 5251, 3, 7, PL_XPOSIXXDIGIT } /* ishexdigit */, - { 0, 1448, 1638, 5, 20, PL_SUPPUNCTUATION } /* insupplementalpunctuation */, - { 16, 2229, 5310, 16, 13, PL_XPOSIXDIGIT } /* generalcategory=decimalnumber */, - { 0, 8777, 7951, 3, 5, PL_CWL } /* cwl=true */, - { 0, 184, 8007, 3, 4, PL_CWKCF } /* iscwkcf */, - { 2, 6890, 3738, 4, 16, PL_LATIN1 } /* blk=latin1supplement */, - { 0, 974, 8691, 27, 2, PL_CCC__28 } /* canonicalcombiningclass=ccc28 */, - { 0, 5645, 3407, 10, 17, PL_BC__ES } /* bidiclass=europeanseparator */, - { 19, 4630, 58, 3, 4, PL_UIDEO } /* isuideo */, - { 21, 6890, 6676, 4, 10, PL_INOLDPERSIAN } /* blk=oldpersian */, - { 2, 8096, 2674, 4, 9, PL_SUND } /* scx=sundanese */, - { 0, 6890, 2408, 4, 6, PL_INBRAHMI } /* blk=brahmi */, - { 24, 8340, 5861, 3, 12, PL_JG__MALAYALAMNGA } /* jg=malayalamnga */, - { 1, 4757, 7768, 14, 6, -PL_GREXT } /* graphemeextend=false */, - { 1, 184, 8263, 2, 2, PL_MC } /* ismc */, - { 0, 42, 0, 16, 0, PL_CJKCOMPAT } /* cjkcompatibility */, - { 0, 3129, 5777, 17, 4, PL_HEBR } /* scriptextensions=hebr */, - { 0, 184, 1724, 2, 22, PL_EARLYDYNASTICCUNEIFORM } /* isearlydynasticcuneiform */, - { 11, 2877, 0, 10, 0, PL_DEVA } /* devanagari */, - { 0, 8376, 373, 3, 2, PL_LB__OP } /* lb=op */, - { 0, 2750, 7768, 4, 2, -PL_TERM } /* term=f */, - { 4, 6613, 4561, 3, 3, PL_HEBR } /* ishebr */, - { 1, 1503, 3391, 3, 15, PL_ETHIOPICEXT } /* inethiopicextended */, - { 0, 7906, 7500, 4, 6, PL_SC__KALI } /* sc=kayahli */, - { 0, 4254, 0, 15, 0, PL_DIACRITICALSEXT } /* diacriticalsext */, - { 6, 1426, 3978, 22, 16, PL_INSC__SYLLABLEMODIFIER } /* indicsyllabiccategory=syllablemodifier */, - { 20, 6221, 115, 4, 23, PL_DIACRITICALS } /* incombiningdiacriticalmarks */, - { 2, 5544, 7936, 13, 4, PL_NV__1_SLASH_16 } /* numericvalue=1/16 */, - { 49, 6713, 8747, 3, 3, PL_IN__6 } /* in=6.0 */, - { 2, 1133, 7951, 26, 5, PL_PCM } /* prependedconcatenationmark=true */, - { 2, 8011, 849, 3, 10, PL_CO } /* gc=privateuse */, - { 5, 436, 3223, 5, 3, -PL_NCHAR } /* nchar=no */, - { 4, 8272, 7951, 4, 5, PL_CWCF } /* cwcf=true */, - { 0, 7136, 5336, 6, 8, PL_GREEKEXT } /* block=greekext */, - { 4, 7288, 2409, 8, 5, PL_BRAH } /* script=brahmi */, - { 1, 1981, 0, 18, 0, PL_CYRILLICSUP } /* cyrillicsupplement */, - { 0, 2100, 4511, 4, 13, PL_SARB } /* isoldsoutharabian */, - { 7, 8011, 1886, 3, 2, PL_NL } /* gc=nl */, - { 2, 5645, 2289, 10, 20, PL_BC__LRE } /* bidiclass=lefttorightembedding */, - { 0, 8384, 0, 4, 0, PL_LINB } /* linb */, - { 0, 7689, 5246, 3, 4, PL_ASCII } /* isascii */, - { 43, 8783, 3581, 3, 2, PL_CWU } /* cwu=t */, - { 9, 8096, 7436, 4, 4, PL_ELBA } /* scx=elba */, - { 0, 8340, 8837, 3, 3, PL_JG__TAH } /* jg=tah */, - { 3, 2229, 4239, 16, 15, PL_PD } /* generalcategory=dashpunctuation */, - { 4, 7136, 6944, 6, 9, PL_LATINEXTC } /* block=latinextc */, - { 10, 184, 7506, 2, 7, PL_LINA } /* islineara */, - { 0, 8096, 7992, 5, 4, PL_BUHD } /* scx=buhid */, - { 3, 184, 8476, 2, 4, PL_COPT } /* isqaac */, - { 45, 8376, 5583, 3, 9, PL_LB__QU } /* lb=quotation */, - { 0, 5134, 0, 3, 0, PL_P } /* isp */, - { 7, 6890, 6746, 4, 10, PL_SMALLFORMS } /* blk=smallforms */, - { 5, 18, 7997, 2, 2, PL_RI } /* ri=y */, - { 0, 7136, 2967, 6, 8, PL_INGEORGIAN } /* block=georgian */, - { 2, 8016, 4649, 5, 2, PL_WB__GAZ } /* gcb=gaz */, - { 1, 6713, 8735, 3, 3, PL_IN__5_DOT_1 } /* in=5.1 */, - { 1, 8096, 2484, 4, 19, PL_EGYP } /* scx=egyptianhieroglyphs */, - { 2, 7459, 8066, 3, 5, PL_SC__ORYA } /* sc=oriya */, - { 0, 184, 2895, 2, 8, PL_ETHI } /* isethiopic */, - { 37, 8096, 6439, 4, 4, PL_SYLO } /* scx=sylo */, - { 1, 184, 4254, 2, 15, PL_DIACRITICALSEXT } /* isdiacriticalsext */, - { 11, 184, 8046, 2, 5, PL_LIMB } /* islimbu */, - { 0, 184, 3111, 2, 18, PL_RUMI } /* isruminumeralsymbols */, - { 24, 5645, 4729, 10, 14, PL_BC__EN } /* bidiclass=europeannumber */, - { 4, 974, 4538, 24, 2, PL_CCC__0 } /* canonicalcombiningclass=nr */, - { 1, 8011, 6340, 3, 11, PL_LO } /* gc=otherletter */, - { 2, 5645, 102, 10, 2, PL_BC__ET } /* bidiclass=et */, - { 3, 6263, 3521, 10, 5, PL_LB__SP } /* linebreak=space */, - { 1, 8340, 5439, 4, 4, PL_JG__GAMAL } /* jg=gamal */, - { 0, 6890, 510, 4, 20, PL_CJK } /* blk=cjkunifiedideographs */, - { 2, 8096, 8440, 4, 4, PL_OGAM } /* scx=ogam */, - { 8, 7625, 0, 7, 0, PL_SUPPUAB } /* suppuab */, - { 3, 5544, 8161, 13, 3, PL_NV__3_SLASH_2 } /* numericvalue=3/2 */, - { 1, 3129, 2895, 17, 4, PL_ETHI } /* scriptextensions=ethi */, - { 1, 8816, 8758, 3, 2, PL_NV__37 } /* nv=37 */, - { 0, 7660, 0, 4, 0, PL_TIRH } /* tirh */, - { 14, 6890, 7422, 4, 7, PL_CJKEXTF } /* blk=cjkextf */, - { 0, 6554, 7992, 3, 4, PL_INBUHID } /* inbuhid */, - { 5, 1417, 2521, 9, 2, PL_PF } /* category=pf */, - { 0, 1417, 38, 9, 2, PL_XPOSIXDIGIT } /* category=nd */, - { 1, 6890, 2967, 4, 11, PL_GEORGIANSUP } /* blk=georgiansup */, - { 1, 4198, 2952, 5, 15, PL_INPUNCTUATION } /* ingeneralpunctuation */, - { 0, 4104, 0, 4, 0, PL_BAMU } /* bamu */, - { 20, 8096, 7681, 4, 7, PL_ZZZZ } /* scx=unknown */, - { 2, 8816, 7732, 3, 5, PL_NV__50000 } /* nv=50000 */, - { 0, 4314, 4935, 13, 4, PL_JG__BETH } /* joininggroup=beth */, - { 0, 1133, 0, 26, 0, PL_PCM } /* prependedconcatenationmark */, - { 44, 6472, 5753, 10, 12, PL_WB__GAZ } /* wordbreak=glueafterzwj */, - { 5, 8204, 3581, 4, 2, PL_POSIXXDIGIT } /* ahex=t */, - { 121, 8096, 8046, 4, 5, PL_LIMB } /* scx=limbu */, - { 0, 7840, 893, 3, 27, PL_VSSUP } /* isvariationselectorssupplement */, - { 6, 1372, 0, 2, 0, PL_LU } /* lu */, - { 5, 7136, 4590, 6, 2, PL_INVS } /* block=vs */, - { 0, 8264, 0, 4, 0, PL_CANS } /* cans */, - { 0, 7816, 3223, 6, 2, -PL_GRBASE } /* grbase=n */, - { 1, 7136, 6980, 6, 9, PL_INNABATAEAN } /* block=nabataean */, - { 5, 184, 221, 2, 2, PL_L_AMP_ } /* isl_ */, - { 0, 974, 7944, 24, 2, PL_CCC__12 } /* canonicalcombiningclass=12 */, - { 0, 184, 8372, 2, 4, PL_LATN } /* islatn */, - { 1, 5121, 0, 14, 0, PL_PHLP } /* psalterpahlavi */, - { 56, 6890, 4224, 4, 15, PL_CURRENCYSYMBOLS } /* blk=currencysymbols */, - { 33, 8096, 7632, 4, 7, PL_TGLG } /* scx=tagalog */, - { 10, 6713, 8864, 3, 3, PL_IN__5 } /* in=v50 */, - { 0, 7569, 0, 4, 0, PL_OSMA } /* osma */, - { 120, 5544, 8905, 13, 2, PL_NV__39 } /* numericvalue=39 */, - { 0, 6890, 1209, 4, 25, PL_SUPERANDSUB } /* blk=superscriptsandsubscripts */, - { 3, 8240, 2655, 3, 19, PL_BC__RLO } /* bc=righttoleftoverride */, - { 3, 7136, 3441, 6, 17, PL_LETTERLIKESYMBOLS } /* block=letterlikesymbols */, - { 1, 6263, 4898, 11, 13, PL_LB__BK } /* linebreak=mandatorybreak */, - { 27, 1812, 0, 15, 0, PL_TRANSPORTANDMAP } /* transportandmap */, - { 128, 119, 7193, 3, 7, PL_INGUJARATI } /* ingujarati */, - { 7, 7288, 4010, 7, 6, PL_TANG } /* script=tangut */, - { 0, 184, 7366, 2, 4, PL_BENG } /* isbeng */, - { 1, 6890, 4419, 4, 15, PL_MISCPICTOGRAPHS } /* blk=miscpictographs */, - { 0, 7288, 8046, 7, 4, PL_SC__LIMB } /* script=limb */, - { 2, 3690, 0, 16, 0, PL_PF } /* finalpunctuation */, - { 35, 4855, 0, 14, 0, PL_LATINEXTC } /* latinextendedc */, - { 2, 1184, 7951, 25, 5, PL_DI } /* defaultignorablecodepoint=true */, - { 0, 7459, 7918, 3, 6, PL_SC__THAA } /* sc=thaana */, - { 0, 6439, 0, 4, 0, PL_SYLO } /* sylo */, - { 0, 8096, 6626, 4, 4, PL_KHAR } /* scx=khar */, - { 0, 2531, 0, 4, 0, PL_MULT } /* mult */, - { 0, 8016, 5754, 5, 11, PL_WB__GAZ } /* gcb=glueafterzwj */, - { 3, 8816, 7720, 3, 4, PL_NV__4000 } /* nv=4000 */, - { 9, 5134, 473, 3, 2, PL_PUA } /* ispua */, - { 29, 7459, 7822, 3, 6, PL_HATR } /* sc=hatran */, - { 8, 7288, 5825, 7, 4, PL_SC__MAHJ } /* script=mahj */, - { 0, 8504, 1929, 3, 5, PL_SB__UP } /* sb=upper */, - { 1, 6890, 1258, 4, 24, PL_ARABICPFB } /* blk=arabicpresentationformsb */, - { 0, 6076, 7997, 11, 2, PL_BIDIC } /* bidicontrol=y */, - { 1, 5192, 448, 3, 31, PL_IDEOGRAPHICSYMBOLS } /* isideographicsymbolsandpunctuation */, - { 11, 2985, 3223, 18, 3, -PL_IDST } /* idstrinaryoperator=no */, - { 0, 2967, 0, 11, 0, PL_GEORGIANSUP } /* georgiansup */, - { 8, 8376, 5570, 3, 13, PL_LB__PR } /* lb=prefixnumeric */, - { 2, 5596, 0, 13, 0, PL_VERTICALFORMS } /* verticalforms */, - { 3, 1855, 3223, 21, 3, -PL_CWCM } /* changeswhencasemapped=no */, - { 1, 8011, 8937, 3, 2, PL_ZL } /* gc=zl */, - { 1, 808, 0, 11, 0, PL_PHONETICEXT } /* phoneticext */, - { 0, 184, 3021, 2, 9, PL_LATINEXTA } /* islatinexta */, - { 0, 7288, 8480, 7, 4, PL_SC__QAAI } /* script=qaai */, - { 0, 7459, 57, 3, 2, PL_SC__YI } /* sc=yi */, - { 1, 2249, 0, 13, 0, PL_GLAGOLITICSUP } /* glagoliticsup */, - { 6, 7224, 62, 8, 5, PL_XPOSIXGRAPH } /* isxposixgraph */, - { 2, 4542, 7654, 3, 6, PL_TIBT } /* istibetan */, - { 2, 8340, 5453, 3, 13, PL_JG__MANICHAEANMEM } /* jg=manichaeanmem */, - { 0, 11, 7768, 3, 2, -PL_DIA } /* dia=f */, - { 4, 1963, 7951, 7, 5, PL_RADICAL } /* radical=true */, - { 1, 1417, 1797, 9, 14, PL_LM } /* category=modifierletter */, - { 2, 8340, 8774, 3, 3, PL_JG__BEH } /* jg=beh */, - { 0, 3339, 0, 17, 0, PL_CYRILLICEXTB } /* cyrillicextendedb */, - { 49, 6613, 34, 3, 2, PL_XPOSIXXDIGIT } /* ishex */, - { 0, 8276, 3223, 4, 3, -PL_CWCM } /* cwcm=no */, - { 0, 6890, 1543, 4, 23, PL_GEOMETRICSHAPESEXT } /* blk=geometricshapesextended */, - { 0, 3129, 4010, 17, 6, PL_TANG } /* scriptextensions=tangut */, - { 4, 6890, 1589, 4, 23, PL_LATINEXTADDITIONAL } /* blk=latinextendedadditional */, - { 1, 184, 4134, 2, 15, PL_BRAI } /* isbraillepatterns */, - { 2, 750, 0, 22, 0, PL_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsup */, - { 176, 8240, 435, 3, 2, PL_BC__ON } /* bc=on */, - { 1, 7459, 8604, 3, 4, PL_SC__ZYYY } /* sc=zyyy */, - { 2, 184, 7882, 2, 4, PL_LYDI } /* islydi */, - { 0, 7136, 779, 6, 29, PL_MISCARROWS } /* block=miscellaneoussymbolsandarrows */, - { 0, 8016, 70, 4, 2, PL_GCB__PP } /* gcb=pp */, - { 7, 6483, 3581, 4, 2, PL_XIDC } /* xidc=t */, - { 0, 6210, 1982, 3, 20, PL_CYRILLICSUP } /* incyrillicsupplementary */, - { 1, 7025, 0, 9, 0, PL_ORKH } /* oldturkic */, - { 0, 5544, 8172, 13, 4, PL_NV__3_SLASH_16 } /* numericvalue=3/16 */, - { 17, 6263, 1886, 10, 2, PL_LB__NL } /* linebreak=nl */, - { 3, 7459, 2841, 3, 4, PL_SC__COPT } /* sc=copt */, - { 0, 5544, 8758, 13, 2, PL_NV__37 } /* numericvalue=37 */, - { 0, 8816, 7936, 3, 5, PL_NV__1_SLASH_160 } /* nv=1/160 */, - { 33, 1448, 839, 5, 25, PL_SUPPUAA } /* insupplementaryprivateuseareaa */, - { 0, 8016, 1083, 4, 2, PL_LB__LF } /* gcb=lf */, - { 4, 7459, 8296, 3, 4, PL_GONM } /* sc=gonm */, - { 2, 8340, 3458, 3, 17, PL_JG__MANICHAEANDHAMEDH } /* jg=manichaeandhamedh */, - { 0, 2100, 7018, 4, 7, PL_PERM } /* isoldpermic */, - { 4, 3129, 8244, 17, 4, PL_BHKS } /* scriptextensions=bhks */, - { 1, 1897, 7997, 21, 2, PL_CWT } /* changeswhentitlecased=y */, - { 0, 8272, 3223, 4, 2, -PL_CWCF } /* cwcf=n */, - { 0, 1724, 0, 22, 0, PL_EARLYDYNASTICCUNEIFORM } /* earlydynasticcuneiform */, - { 71, 6890, 1612, 4, 23, PL_SHORTHANDFORMATCONTROLS } /* blk=shorthandformatcontrols */, - { 6, 7459, 8056, 3, 5, PL_NSHU } /* sc=nushu */, - { 0, 8816, 8691, 3, 2, PL_NV__28 } /* nv=28 */, - { 11, 8376, 1479, 3, 2, PL_LB__AI } /* lb=ai */, - { 0, 6890, 7296, 4, 8, PL_SPECIALS } /* blk=specials */, - { 0, 184, 2788, 3, 7, PL_CHER } /* ischerokee */, - { 0, 6263, 5789, 10, 12, PL_LB__IS } /* linebreak=infixnumeric */, - { 113, 7457, 2625, 5, 10, PL_INSC__TONELETTER } /* insc=toneletter */, - { 1, 184, 4813, 2, 14, PL_KANASUP } /* iskanasupplement */, - { 4, 5245, 7951, 13, 5, PL_POSIXXDIGIT } /* asciihexdigit=true */, - { 0, 8340, 6523, 3, 3, PL_JG__FEH } /* jg=feh */, - { 2, 4314, 4389, 13, 15, PL_JG__MANICHAEANZAYIN } /* joininggroup=manichaeanzayin */, - { 1, 1402, 3171, 24, 12, PL_INPC__LEFTANDRIGHT } /* indicpositionalcategory=leftandright */, - { 2, 1417, 5253, 9, 5, PL_XPOSIXDIGIT } /* category=digit */, - { 5, 7459, 4134, 3, 4, PL_BRAI } /* sc=brai */, - { 1, 1448, 1212, 5, 22, PL_SUPERANDSUB } /* insuperscriptsandsubscripts */, - { 1, 184, 1543, 2, 23, PL_GEOMETRICSHAPESEXT } /* isgeometricshapesextended */, - { 8, 7136, 7367, 7, 6, PL_INBENGALI } /* block=bengali */, - { 62, 1206, 3148, 3, 10, PL_TAIXUANJING } /* intaixuanjing */, - { 0, 1081, 0, 26, 0, PL_HALFANDFULLFORMS } /* halfwidthandfullwidthforms */, - { 0, 6890, 3237, 4, 10, PL_ALCHEMICAL } /* blk=alchemical */, - { 2, 6713, 8849, 3, 3, PL_IN__3 } /* in=v30 */, - { 5, 2859, 45, 18, 3, PL_DT__COM } /* decompositiontype=com */, - { 0, 7380, 7944, 7, 2, PL_CCC__12 } /* ccc=ccc12 */, - { 129, 5645, 7951, 5, 5, PL_BIDIC } /* bidic=true */, - { 0, 7288, 7312, 7, 8, PL_SC__TAGB } /* script=tagbanwa */, - { 0, 8786, 7888, 3, 6, PL_EA__NA } /* ea=narrow */, - { 0, 7478, 1194, 3, 3, PL_SORA } /* issora */, - { 35, 974, 8916, 27, 2, PL_CCC__84 } /* canonicalcombiningclass=ccc84 */, - { 1, 7344, 3223, 4, 3, -PL_XIDS } /* xids=no */, - { 17, 3129, 8280, 17, 4, PL_CYRL } /* scriptextensions=cyrl */, - { 0, 2877, 0, 18, 0, PL_DEVANAGARIEXT } /* devanagariextended */, - { 0, 3424, 3223, 4, 2, -PL_IDSB } /* idsb=n */, - { 0, 11, 3581, 3, 2, PL_DIA } /* dia=t */, - { 73, 8508, 8, 4, 3, PL_LANA } /* sc=lana */, - { 2, 8096, 3288, 4, 17, PL_AGHB } /* scx=caucasianalbanian */, - { 68, 7471, 6472, 7, 4, PL_POSIXWORD } /* isposixword */, - { 0, 3129, 7858, 17, 4, PL_KHOJ } /* scriptextensions=khoj */, - { 16, 7136, 7660, 6, 7, PL_INTIRHUTA } /* block=tirhuta */, - { 2, 21, 948, 3, 16, PL_ANCIENTGREEKMUSIC } /* inancientgreekmusic */, - { 33, 7288, 5957, 7, 4, PL_MEND } /* script=mend */, - { 1, 8376, 8925, 3, 2, PL_LB__H3 } /* lb=h3 */, - { 4, 8572, 6971, 3, 9, PL_WB__MB } /* wb=midnumlet */, - { 18, 3084, 0, 9, 0, PL_Z } /* separator */, - { 2, 8096, 8264, 4, 4, PL_CANS } /* scx=cans */, - { 0, 184, 361, 2, 21, PL_MATHOPERATORS } /* ismathematicaloperators */, - { 0, 7471, 7986, 7, 5, PL_POSIXBLANK } /* isposixblank */, - { 10, 8116, 0, 5, 0, PL_TAML } /* tamil */, - { 0, 4402, 4420, 3, 14, PL_MISCPICTOGRAPHS } /* inmiscpictographs */, - { 1, 5134, 8465, 3, 3, PL_PHNX } /* isphnx */, - { 0, 8240, 2289, 3, 20, PL_BC__LRE } /* bc=lefttorightembedding */, - { 0, 6210, 43, 3, 8, PL_CJKCOMPAT } /* incjkcompat */, - { 0, 8340, 5466, 3, 13, PL_JG__MANICHAEANNUN } /* jg=manichaeannun */, - { 0, 6208, 0, 5, 0, PL_JOINC } /* joinc */, - { 1, 974, 16, 24, 1, PL_CCC__B } /* canonicalcombiningclass=b */, - { 0, 8786, 8, 3, 1, PL_EA__A } /* ea=a */, - { 0, 849, 0, 10, 0, PL_CO } /* privateuse */, - { 0, 184, 1702, 2, 12, PL_DIACRITICALS } /* isdiacriticals */, - { 20, 7136, 1001, 6, 27, PL_ENCLOSEDCJK } /* block=enclosedcjklettersandmonths */, - { 2, 7457, 1330, 5, 24, PL_INSC__CONSONANTSUCCEEDINGREPHA } /* insc=consonantsucceedingrepha */, - { 0, 5134, 7036, 4, 7, PL_PALM } /* ispalmyrene */, - { 128, 7459, 8412, 3, 4, PL_MTEI } /* sc=mtei */, - { 1, 8196, 8152, 4, 4, PL_AGE__10 } /* age=10.0 */, - { 57, 7457, 3305, 5, 17, PL_INSC__CONSONANTPREFIXED } /* insc=consonantprefixed */, - { 1, 5657, 7768, 12, 6, -PL_BIDIM } /* bidimirrored=false */, - { 17, 7696, 0, 6, 0, PL_XPOSIXSPACE } /* wspace */, - { 2, 6263, 18, 10, 2, PL_RI } /* linebreak=ri */, - { 0, 8816, 8168, 3, 2, PL_NV__17 } /* nv=17 */, - { 1, 8240, 25, 3, 1, PL_BC__S } /* bc=s */, - { 8, 7459, 8284, 3, 4, PL_DSRT } /* sc=dsrt */, - { 4, 7136, 849, 6, 10, PL_PUA } /* block=privateuse */, - { 23, 4314, 4785, 13, 14, PL_JG__HAMZAONHEHGOAL } /* joininggroup=hamzaonhehgoal */, - { 5, 5544, 7702, 13, 2, PL_NV__20 } /* numericvalue=20 */, - { 1, 7459, 8216, 3, 4, PL_ARMI } /* sc=armi */, - { 24, 184, 3610, 2, 4, PL_BOPO } /* isbopo */, - { 0, 8016, 3526, 4, 17, PL_RI } /* gcb=regionalindicator */, - { 8, 8026, 2355, 5, 6, PL_INPC__BOTTOM } /* inpc=bottom */, - { 10, 8196, 7702, 4, 1, PL_AGE__2 } /* age=2 */, - { 2, 6890, 2877, 4, 18, PL_DEVANAGARIEXT } /* blk=devanagariextended */, - { 0, 184, 4104, 2, 4, PL_BAMU } /* isbamu */, - { 1, 3129, 7971, 17, 5, PL_BATK } /* scriptextensions=batak */, - { 130, 2229, 36, 17, 1, PL_LT } /* generalcategory=lt */, - { 1, 3129, 7956, 17, 5, PL_ADLM } /* scriptextensions=adlam */, - { 11, 11, 3223, 2, 2, -PL_DI } /* di=n */, - { 0, 8312, 0, 4, 0, PL_HAN } /* hani */, - { 5, 7136, 6736, 6, 10, PL_INSAURASHTRA } /* block=saurashtra */, - { 0, 7387, 0, 7, 0, PL_CJKEXTA } /* cjkexta */, - { 1, 2229, 1452, 16, 2, PL_PS } /* generalcategory=ps */, - { 0, 1834, 0, 21, 0, PL_CWCF } /* changeswhencasefolded */, - { 2, 6890, 947, 4, 27, PL_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusicalnotation */, - { 3, 974, 24, 24, 1, PL_CCC__L } /* canonicalcombiningclass=l */, - { 8, 7344, 3223, 8, 3, -PL_XIDS } /* xidstart=no */, - { 0, 4542, 2117, 3, 3, PL_THAI } /* isthai */, - { 4, 217, 7052, 6, 9, PL__PERL_QUOTEMETA } /* _perl_quotemeta */, - { 1, 698, 0, 2, 0, PL_MN } /* mn */, - { 0, 7689, 80, 4, 33, PL_ARABICMATH } /* isarabicmathematicalalphabeticsymbols */, - { 1, 7471, 5315, 7, 5, PL_POSIXALNUM } /* isposixalnum */, - { 1, 2617, 0, 19, 0, PL_MODIFIERTONELETTERS } /* modifiertoneletters */, - { 40, 7136, 3390, 6, 11, PL_ETHIOPICEXT } /* block=ethiopicext */, - { 0, 32, 0, 2, 0, PL_CS } /* cs */, - { 68, 7380, 8632, 4, 2, PL_CCC__91 } /* ccc=91 */, - { 1, 3129, 7583, 17, 7, PL_PHAG } /* scriptextensions=phagspa */, - { 20, 7478, 3561, 3, 16, PL_SUTTONSIGNWRITING } /* issuttonsignwriting */, - { 0, 8240, 2931, 3, 18, PL_BC__FSI } /* bc=firststrongisolate */, - { 1, 2229, 1106, 16, 2, PL_SK } /* generalcategory=sk */, - { 23, 8096, 5933, 4, 12, PL_GONM } /* scx=masaramgondi */, - { 64, 6484, 3223, 10, 3, -PL_IDC } /* idcontinue=no */, - { 82, 8016, 5082, 4, 11, PL_GCB__SM } /* gcb=spacingmark */, - { 80, 7288, 8324, 7, 4, PL_HMNG } /* script=hmng */, - { 81, 4314, 8828, 13, 3, PL_JG__REH } /* joininggroup=reh */, - { 100, 7288, 8312, 7, 4, PL_SC__HAN } /* script=hani */, - { 0, 6890, 6935, 4, 9, PL_LATINEXTB } /* blk=latinextb */, - { 1, 8096, 8492, 4, 4, PL_RUNR } /* scx=runr */, - { 0, 7136, 1960, 6, 14, PL_CJKRADICALSSUP } /* block=cjkradicalssup */, - { 13, 7894, 3581, 6, 2, PL_PATSYN } /* patsyn=t */, - { 0, 8011, 132, 3, 2, PL_LM } /* gc=lm */, - { 1, 1929, 7997, 9, 2, PL_XPOSIXUPPER } /* uppercase=y */, - { 7, 7459, 6439, 3, 4, PL_SC__SYLO } /* sc=sylo */, - { 1, 1426, 7112, 22, 8, PL_INSC__AVAGRAHA } /* indicsyllabiccategory=avagraha */, - { 2, 2560, 0, 19, 0, PL_JAMOEXTB } /* hanguljamoextendedb */, - { 6, 6613, 2542, 3, 18, PL_JAMOEXTA } /* ishanguljamoextendeda */, - { 1, 8232, 0, 4, 0, PL_AVST } /* avst */, - { 0, 8396, 0, 4, 0, PL_MERC } /* merc */, - { 7, 8046, 0, 5, 0, PL_LIMB } /* limbu */, - { 0, 3610, 0, 4, 0, PL_BOPO } /* bopo */, - { 11, 5134, 1541, 3, 3, PL_PHAG } /* isphag */, - { 15, 415, 7997, 11, 2, PL_IDEO } /* ideographic=y */, - { 1, 8340, 4963, 3, 4, PL_JG__HETH } /* jg=heth */, - { 0, 8340, 5502, 3, 3, PL_JG__TAW } /* jg=taw */, - { 0, 7459, 4404, 3, 15, PL_MERC } /* sc=meroiticcursive */, - { 22, 7136, 6120, 6, 6, PL_DOMINO } /* block=domino */, - { 0, 7136, 2249, 6, 13, PL_GLAGOLITICSUP } /* block=glagoliticsup */, - { 0, 21, 3738, 2, 16, PL_LATIN1 } /* inlatin1supplement */, - { 2, 7471, 0, 4, 0, PL_PO } /* ispo */, - { 3, 4402, 6308, 3, 10, PL_MYANMAREXTA } /* inmyanmarexta */, - { 0, 1402, 2295, 24, 5, PL_INPC__RIGHT } /* indicpositionalcategory=right */, - { 0, 7906, 498, 5, 3, PL_KHMR } /* sc=khmer */, - { 1, 7457, 4179, 5, 15, PL_INSC__CONSONANTMEDIAL } /* insc=consonantmedial */, - { 10, 184, 4869, 2, 14, PL_LATINEXTD } /* islatinextendedd */, - { 7, 7994, 966, 4, 2, -PL_IDC } /* idc=no */, - { 2, 7459, 4300, 4, 14, PL_ARMI } /* sc=imperialaramaic */, - { 3, 3946, 7997, 16, 2, PL_STERM } /* sentenceterminal=y */, - { 9, 7459, 8316, 3, 4, PL_SC__HANO } /* sc=hano */, - { 4, 8026, 2349, 5, 3, PL_INPC__TOP } /* inpc=top */, - { 94, 8376, 6880, 3, 2, PL_LB__BB } /* lb=bb */, - { 5, 7471, 5252, 7, 6, PL_POSIXXDIGIT } /* isposixxdigit */, - { 0, 3129, 6736, 17, 4, PL_SAUR } /* scriptextensions=saur */, - { 2, 6890, 7611, 4, 7, PL_INSOYOMBO } /* blk=soyombo */, - { 1, 974, 8933, 24, 2, PL_CCC__9 } /* canonicalcombiningclass=vr */, - { 10, 5544, 7756, 13, 1, PL_NV__9 } /* numericvalue=9 */, - { 1, 8816, 7714, 3, 1, PL_NV__3 } /* nv=3 */, - { 1, 2107, 0, 7, 0, PL_SINH } /* sinhala */, - { 2, 6005, 0, 12, 0, PL_HUNG } /* oldhungarian */, - { 0, 7136, 5933, 6, 12, PL_INMASARAMGONDI } /* block=masaramgondi */, - { 0, 7136, 78, 6, 35, PL_ARABICMATH } /* block=arabicmathematicalalphabeticsymbols */, - { 0, 6472, 6971, 10, 6, PL_WB__MN } /* wordbreak=midnum */, - { 0, 5544, 7941, 13, 5, PL_NV__11_SLASH_12 } /* numericvalue=11/12 */, - { 0, 6890, 7625, 4, 7, PL_SUPPUAB } /* blk=suppuab */, - { 4, 4299, 0, 15, 0, PL_ARMI } /* imperialaramaic */, - { 1, 892, 3223, 17, 2, -PL_VS } /* variationselector=n */, - { 5, 8604, 0, 4, 0, PL_ZYYY } /* zyyy */, - { 11, 7459, 4494, 3, 15, PL_NARB } /* sc=oldnortharabian */, - { 0, 6890, 6546, 4, 10, PL_ASCII } /* blk=basiclatin */, - { 1, 7478, 865, 3, 27, PL_SUPPUAB } /* issupplementaryprivateuseareab */, - { 8, 6890, 6989, 4, 9, PL_INNEWTAILUE } /* blk=newtailue */, - { 1, 7288, 7604, 7, 4, PL_SIDD } /* script=sidd */, - { 0, 184, 5933, 2, 12, PL_GONM } /* ismasaramgondi */, - { 9, 8816, 8917, 3, 2, PL_NV__49 } /* nv=49 */, - { 2, 6890, 1107, 4, 26, PL_KATAKANAEXT } /* blk=katakanaphoneticextensions */, - { 56, 184, 6616, 2, 10, PL_DEP } /* isdeprecated */, - { 1, 6263, 7828, 10, 6, PL_LB__HY } /* linebreak=hyphen */, - { 0, 7136, 7436, 6, 7, PL_INELBASAN } /* block=elbasan */, - { 7, 2674, 0, 9, 0, PL_SUND } /* sundanese */, - { 0, 57, 0, 2, 0, PL_YI } /* yi */, - { 32, 1448, 7628, 5, 4, PL_SUPPUAB } /* insuppuab */, - { 1, 8026, 3171, 5, 12, PL_INPC__LEFTANDRIGHT } /* inpc=leftandright */, - { 4, 8096, 8448, 4, 4, PL_ORKH } /* scx=orkh */, - { 6, 5968, 7026, 3, 8, PL_INOLDTURKIC } /* inoldturkic */, - { 11, 5544, 8897, 13, 2, PL_NV__19 } /* numericvalue=19 */, - { 0, 4402, 7528, 3, 6, PL_INMULTANI } /* inmultani */, - { 2, 949, 3581, 2, 2, PL_CI } /* ci=t */, - { 2, 7459, 3674, 3, 7, PL_SC__CPRT } /* sc=cypriot */, - { 2, 6713, 8885, 3, 3, PL_IN__7 } /* in=v70 */, - { 1, 7224, 468, 8, 5, PL_XPOSIXPUNCT } /* isxposixpunct */, - { 4, 8026, 9, 5, 2, PL_INPC__NA } /* inpc=na */, - { 10, 1426, 3305, 22, 17, PL_INSC__CONSONANTPREFIXED } /* indicsyllabiccategory=consonantprefixed */, - { 0, 4757, 3223, 14, 3, -PL_GREXT } /* graphemeextend=no */, - { 34, 8096, 7882, 4, 4, PL_LYDI } /* scx=lydi */, - { 2, 78, 0, 4, 0, PL_ARAB } /* arab */, - { 198, 7459, 8556, 3, 4, PL_THAI } /* sc=thai */, - { 1, 7380, 8640, 4, 2, PL_CCC__18 } /* ccc=18 */, - { 3, 7689, 3238, 3, 16, PL_ALCHEMICAL } /* isalchemicalsymbols */, - { 0, 8376, 202, 3, 2, PL_LB__SA } /* lb=sa */, - { 1, 7136, 1543, 6, 15, PL_GEOMETRICSHAPES } /* block=geometricshapes */, - { 4, 8328, 5260, 4, 11, PL_BLOCKELEMENTS } /* inblockelements */, - { 0, 7136, 7621, 6, 3, PL_PUA } /* block=pua */, - { 2, 5705, 0, 12, 0, PL_CYRILLICEXTC } /* cyrillicextc */, - { 6, 7344, 7768, 4, 6, -PL_XIDS } /* xids=false */, - { 102, 5192, 6485, 3, 9, PL_IDC } /* isidcontinue */, - { 171, 5134, 5559, 4, 11, PL_PATSYN } /* ispatternsyntax */, - { 0, 8572, 125, 3, 2, PL_LB__CR } /* wb=cr */, - { 0, 7288, 2877, 7, 4, PL_SC__DEVA } /* script=deva */, - { 0, 8011, 4524, 3, 15, PL_PS } /* gc=openpunctuation */, - { 1, 3129, 8260, 17, 4, PL_CAKM } /* scriptextensions=cakm */, - { 1, 184, 2466, 3, 18, PL_COUNTINGROD } /* iscountingrodnumerals */, - { 1, 1448, 6407, 3, 10, PL_INSORASOMPENG } /* insorasompeng */, - { 0, 8816, 8913, 3, 2, PL_NV__47 } /* nv=47 */, - { 0, 7344, 3223, 8, 2, -PL_XIDS } /* xidstart=n */, - { 0, 6340, 0, 11, 0, PL_LO } /* otherletter */, - { 0, 8248, 722, 4, 5, PL_BPT__C } /* bpt=close */, - { 0, 6219, 3223, 11, 3, -PL_JOINC } /* joincontrol=no */, - { 0, 1855, 7768, 21, 2, -PL_CWCM } /* changeswhencasemapped=f */, - { 0, 974, 5220, 24, 1, PL_CCC__0 } /* canonicalcombiningclass=0 */, - { 4, 7380, 7709, 4, 2, PL_CCC__16 } /* ccc=16 */, - { 1, 7459, 8464, 3, 4, PL_PHNX } /* sc=phnx */, - { 2, 8340, 4792, 3, 3, PL_JG__HEH } /* jg=heh */, - { 0, 4314, 5427, 13, 13, PL_JG__MALAYALAMLLLA } /* joininggroup=malayalamllla */, - { 2, 1402, 3165, 24, 10, PL_INPC__TOPANDLEFT } /* indicpositionalcategory=topandleft */, - { 0, 2408, 0, 4, 0, PL_BRAH } /* brah */, - { 5, 5544, 8674, 13, 2, PL_NV__42 } /* numericvalue=42 */, - { 0, 7288, 8584, 7, 4, PL_XSUX } /* script=xsux */, - { 0, 7288, 8091, 7, 5, PL_RUNR } /* script=runic */, - { 1, 8096, 6406, 4, 4, PL_SORA } /* scx=sora */, - { 104, 3129, 7786, 17, 6, PL_CAKM } /* scriptextensions=chakma */, - { 0, 7459, 1566, 3, 6, PL_SC__HANG } /* sc=hangul */, - { 1, 8508, 7871, 4, 3, PL_LEPC } /* sc=lepc */, - { 1, 7136, 7359, 6, 7, PL_INAVESTAN } /* block=avestan */, - { 7, 3114, 1174, 3, 3, PL_UCAS } /* inucas */, - { 1, 7288, 4010, 7, 4, PL_TANG } /* script=tang */, - { 23, 7459, 7366, 3, 7, PL_SC__BENG } /* sc=bengali */, - { 0, 1834, 3581, 21, 2, PL_CWCF } /* changeswhencasefolded=t */, - { 2, 6786, 0, 10, 0, PL_SUPARROWSC } /* suparrowsc */, - { 1, 7136, 479, 6, 31, PL_MATHALPHANUM } /* block=mathematicalalphanumericsymbols */, - { 0, 8288, 8292, 3, 4, PL_DT__FONT } /* dt=font */, - { 2, 8126, 0, 5, 0, PL_VSSUP } /* vssup */, - { 2, 8572, 5772, 3, 5, PL_WB__EB } /* wb=ebase */, - { 0, 6713, 7714, 3, 1, PL_IN__3 } /* in=3 */, - { 3, 4402, 2637, 3, 11, PL_MONGOLIANSUP } /* inmongoliansup */, - { 2, 7136, 750, 6, 22, PL_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsup */, - { 1, 184, 7128, 2, 8, PL_BASS } /* isbassavah */, - { 2, 7459, 5121, 3, 14, PL_SC__PHLP } /* sc=psalterpahlavi */, - { 0, 8340, 5492, 3, 13, PL_JG__MANICHAEANTAW } /* jg=manichaeantaw */, - { 0, 7136, 2731, 6, 19, PL_SUPARROWSC } /* block=supplementalarrowsc */, - { 0, 2990, 80, 4, 33, PL_ARABICMATH } /* inarabicmathematicalalphabeticsymbols */, - { 9, 3129, 7016, 17, 9, PL_PERM } /* scriptextensions=oldpermic */, - { 0, 3129, 8560, 17, 4, PL_TIBT } /* scriptextensions=tibt */, - { 0, 8021, 0, 5, 0, PL_GREXT } /* grext */, - { 6, 6890, 4010, 4, 6, PL_INTANGUT } /* blk=tangut */, - { 5, 4479, 26, 15, 1, PL_NFKCQC__Y } /* nfkcquickcheck=y */, - { 1, 949, 7768, 2, 2, -PL_CI } /* ci=f */, - { 0, 1855, 3581, 21, 2, PL_CWCM } /* changeswhencasemapped=t */, - { 0, 974, 8702, 24, 3, PL_CCC__DA } /* canonicalcombiningclass=234 */, - { 0, 1426, 8051, 22, 5, PL_INSC__NUKTA } /* indicsyllabiccategory=nukta */, - { 1, 7136, 630, 6, 30, PL_CJKEXTE } /* block=cjkunifiedideographsextensione */, - { 8, 436, 7768, 5, 2, -PL_NCHAR } /* nchar=f */, - { 15, 8276, 7768, 4, 2, -PL_CWCM } /* cwcm=f */, - { 0, 1402, 4271, 4, 13, PL_DIACRITICALSSUP } /* indiacriticalssup */, - { 2, 4479, 8256, 5, 4, PL_NFKCQC__N } /* nfkcqc=no */, - { 25, 1159, 7768, 25, 2, -PL_CWKCF } /* changeswhennfkccasefolded=f */, - { 0, 21, 7846, 2, 6, PL_INKAITHI } /* inkaithi */, - { 3, 5192, 416, 3, 10, PL_IDEO } /* isideographic */, - { 3, 1892, 3581, 5, 2, PL_CASED } /* cased=t */, - { 0, 8344, 6053, 3, 12, PL_JT__R } /* jt=rightjoining */, - { 41, 184, 5945, 2, 12, PL_MATHALPHANUM } /* ismathalphanum */, - { 4, 7136, 1612, 6, 23, PL_SHORTHANDFORMATCONTROLS } /* block=shorthandformatcontrols */, - { 16, 4402, 2046, 4, 19, PL_MEETEIMAYEKEXT } /* inmeeteimayekextensions */, - { 1, 5645, 2309, 10, 20, PL_BC__PDF } /* bidiclass=popdirectionalformat */, - { 2, 7459, 4509, 3, 15, PL_SARB } /* sc=oldsoutharabian */, - { 0, 6483, 3223, 11, 2, -PL_XIDC } /* xidcontinue=n */, - { 3, 7345, 3223, 7, 2, -PL_IDS } /* idstart=n */, - { 7, 6890, 1543, 4, 18, PL_GEOMETRICSHAPESEXT } /* blk=geometricshapesext */, - { 1, 184, 3390, 2, 16, PL_ETHIOPICEXT } /* isethiopicextended */, - { 0, 8340, 4792, 3, 7, PL_JG__HEHGOAL } /* jg=hehgoal */, - { 3, 184, 7810, 2, 6, PL_GOTH } /* isgothic */, - { 5, 7478, 3544, 3, 16, PL_SMALLFORMS } /* issmallformvariants */, - { 2, 7136, 3738, 6, 6, PL_LATIN1 } /* block=latin1 */, - { 8, 8340, 5897, 3, 12, PL_JG__MALAYALAMSSA } /* jg=malayalamssa */, - { 5, 7478, 5150, 3, 13, PL_SUPPUNCTUATION } /* issuppunctuation */, - { 0, 7288, 2841, 7, 4, PL_SC__COPT } /* script=copt */, - { 2, 6806, 0, 4, 0, PL_WARA } /* wara */, - { 2, 8939, 0, 2, 0, PL_ZP } /* zp */, - { 1, 4554, 235, 14, 2, PL_SB__LO } /* sentencebreak=lo */, - { 4, 1358, 7768, 20, 2, -PL_CE } /* compositionexclusion=f */, - { 0, 1701, 0, 2, 0, PL_SD } /* sd */, - { 0, 8196, 8879, 4, 3, PL_AGE__6_DOT_2 } /* age=v62 */, - { 1, 974, 8617, 27, 2, PL_CCC__31 } /* canonicalcombiningclass=ccc31 */, - { 0, 4542, 7661, 3, 3, PL_TIRH } /* istirh */, - { 0, 7136, 1658, 6, 22, PL_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatideographssup */, - { 8, 184, 8388, 2, 4, PL_LISU } /* islisu */, - { 12, 7459, 8548, 3, 4, PL_TFNG } /* sc=tfng */, - { 2, 974, 8646, 27, 2, PL_CCC__29 } /* canonicalcombiningclass=ccc29 */, - { 0, 96, 7768, 10, 2, -PL_XPOSIXALPHA } /* alphabetic=f */, - { 0, 8340, 7304, 3, 8, PL_JG__SWASHKAF } /* jg=swashkaf */, - { 5, 76, 2876, 2, 3, PL_XPOSIXDIGIT } /* nt=de */, - { 33, 6263, 5570, 10, 13, PL_LB__PR } /* linebreak=prefixnumeric */, - { 0, 6706, 8714, 10, 3, PL_IN__3_DOT_2 } /* presentin=3.2 */, - { 0, 184, 0, 3, 0, PL_C } /* isc */, - { 4, 7380, 7702, 4, 2, PL_CCC__20 } /* ccc=20 */, - { 0, 184, 1189, 2, 2, PL_LT } /* islt */, - { 116, 4314, 6533, 13, 3, PL_JG__QAF } /* joininggroup=qaf */, - { 16, 6221, 252, 4, 31, PL_DIACRITICALSEXT } /* incombiningdiacriticalmarksextended */, - { 66, 1358, 3581, 20, 2, PL_CE } /* compositionexclusion=t */, - { 76, 1426, 6716, 22, 10, PL_INSC__PUREKILLER } /* indicsyllabiccategory=purekiller */, - { 30, 8376, 1306, 3, 13, PL_LB__CM } /* lb=combiningmark */, - { 9, 184, 1628, 3, 6, PL_XPOSIXCNTRL } /* iscontrol */, - { 0, 8786, 1081, 3, 9, PL_EA__H } /* ea=halfwidth */, - { 0, 6890, 6826, 4, 10, PL_YIRADICALS } /* blk=yiradicals */, - { 0, 184, 7520, 2, 7, PL_MARC } /* ismarchen */, - { 8, 7288, 5777, 7, 4, PL_HEBR } /* script=hebr */, - { 1, 6713, 8750, 3, 3, PL_IN__6_DOT_1 } /* in=6.1 */, - { 2, 7136, 6908, 6, 9, PL_EMOTICONS } /* block=emoticons */, - { 4, 7136, 3390, 6, 17, PL_ETHIOPICEXTA } /* block=ethiopicextendeda */, - { 94, 7459, 8456, 3, 4, PL_OSGE } /* sc=osge */, - { 105, 2985, 7997, 18, 4, PL_IDST } /* idstrinaryoperator=yes */, - { 37, 6713, 8564, 3, 4, PL_IN__10 } /* in=v100 */, - { 49, 21, 3111, 2, 4, PL_RUMI } /* inrumi */, - { 2, 4542, 1161, 3, 3, PL_TANG } /* istang */, - { 0, 7136, 3770, 6, 16, PL_LINEARBSYLLABARY } /* block=linearbsyllabary */, - { 2, 2229, 3084, 20, 9, PL_ZL } /* generalcategory=lineseparator */, - { 4, 8340, 4389, 3, 15, PL_JG__MANICHAEANZAYIN } /* jg=manichaeanzayin */, - { 20, 7168, 3223, 8, 3, -PL_EXT } /* extender=no */, - { 4, 3129, 8584, 17, 4, PL_XSUX } /* scriptextensions=xsux */, - { 76, 4590, 0, 2, 0, PL_VS } /* vs */, - { 22, 8894, 3183, 3, 18, PL_VO__TR } /* vo=transformedrotated */, - { 1, 217, 1074, 33, 5, PL__PERL_PROBLEMATIC_LOCALE_FOLDEDS_START } /* _perl_problematic_locale_foldeds_start */, - { 0, 8026, 6042, 3, 11, PL_PLAYINGCARDS } /* inplayingcards */, - { 0, 58, 7768, 4, 2, -PL_IDEO } /* ideo=f */, - { 161, 4314, 5476, 13, 3, PL_JG__NUN } /* joininggroup=nun */, - { 0, 6890, 4590, 4, 2, PL_INVS } /* blk=vs */, - { 2, 7894, 7768, 6, 6, -PL_PATSYN } /* patsyn=false */, - { 0, 7136, 6935, 6, 9, PL_LATINEXTB } /* block=latinextb */, - { 128, 8121, 3581, 5, 2, PL_UIDEO } /* uideo=t */, - { 2, 8380, 0, 4, 0, PL_LINA } /* lina */, - { 42, 974, 184, 24, 2, PL_CCC__IS } /* canonicalcombiningclass=is */, - { 1, 4239, 0, 15, 0, PL_PD } /* dashpunctuation */, - { 0, 7906, 6928, 5, 7, PL_SC__SIND } /* sc=khudawadi */, - { 1, 8240, 8, 3, 2, PL_BC__AN } /* bc=an */, - { 1, 8011, 966, 3, 2, PL_NO } /* gc=no */, - { 4, 8336, 7322, 4, 6, PL_INTIFINAGH } /* intifinagh */, - { 1, 4630, 7337, 3, 7, PL_UGAR } /* isugaritic */, - { 1, 7345, 7997, 7, 4, PL_IDS } /* idstart=yes */, - { 33, 1768, 0, 22, 0, PL_MISCTECHNICAL } /* miscellaneoustechnical */, - { 12, 7478, 3947, 3, 15, PL_STERM } /* issentenceterminal */, - { 0, 1001, 0, 11, 0, PL_ENCLOSEDCJK } /* enclosedcjk */, - { 0, 8096, 7, 4, 18, PL_CANS } /* scx=canadianaboriginal */, - { 33, 5544, 7710, 13, 4, PL_NV__6000 } /* numericvalue=6000 */, - { 0, 184, 2249, 2, 13, PL_GLAGOLITICSUP } /* isglagoliticsup */, - { 23, 2985, 3223, 4, 3, -PL_IDST } /* idst=no */, - { 65, 7288, 2249, 7, 4, PL_SC__GLAG } /* script=glag */, - { 0, 184, 1659, 3, 18, PL_CJKCOMPATIDEOGRAPHS } /* iscjkcompatideographs */, - { 0, 184, 8056, 2, 5, PL_NSHU } /* isnushu */, - { 2, 184, 1856, 3, 20, PL_CWCM } /* ischangeswhencasemapped */, - { 88, 7478, 1402, 3, 3, PL_SIND } /* issind */, - { 28, 7136, 415, 6, 32, PL_INIDC } /* block=ideographicdescriptioncharacters */, - { 3, 7136, 4010, 6, 16, PL_TANGUTCOMPONENTS } /* block=tangutcomponents */, - { 4, 974, 6230, 24, 11, PL_CCC__8 } /* canonicalcombiningclass=kanavoicing */, - { 15, 6890, 7415, 4, 7, PL_CJKEXTE } /* blk=cjkexte */, - { 0, 2859, 7184, 18, 8, PL_DT__FRA } /* decompositiontype=fraction */, - { 1, 8096, 7527, 4, 7, PL_MULT } /* scx=multani */, - { 7, 6439, 0, 11, 0, PL_SYLO } /* sylotinagri */, - { 1, 58, 3581, 4, 2, PL_IDEO } /* ideo=t */, - { 15, 8777, 3223, 3, 2, -PL_CWL } /* cwl=n */, - { 0, 8816, 7714, 3, 2, PL_NV__30 } /* nv=30 */, - { 8, 7136, 6596, 6, 10, PL_COMPATJAMO } /* block=compatjamo */, - { 2, 7226, 1929, 6, 5, PL_XPOSIXUPPER } /* xposixupper */, - { 0, 1746, 1690, 21, 2, PL_GCB__CN } /* graphemeclusterbreak=cn */, - { 3, 5250, 7997, 8, 2, PL_XPOSIXXDIGIT } /* hexdigit=y */, - { 4, 184, 7858, 2, 6, PL_KHOJ } /* iskhojki */, - { 1, 8096, 4404, 4, 15, PL_MERC } /* scx=meroiticcursive */, - { 83, 184, 7846, 2, 6, PL_KTHI } /* iskaithi */, - { 0, 4402, 2158, 10, 11, PL_MERO } /* inmeroitichieroglyphs */, - { 10, 6713, 8714, 3, 3, PL_IN__3_DOT_2 } /* in=3.2 */, - { 0, 1417, 206, 9, 2, PL_PI } /* category=pi */, - { 11, 8096, 8536, 4, 4, PL_TALU } /* scx=talu */, - { 1, 974, 78, 24, 2, PL_CCC__AR } /* canonicalcombiningclass=ar */, - { 9, 7816, 0, 6, 0, PL_GRBASE } /* grbase */, - { 16, 6706, 8885, 10, 3, PL_IN__7 } /* presentin=v70 */, - { 3, 7288, 7900, 7, 6, PL_RJNG } /* script=rejang */, - { 1, 8011, 1204, 3, 2, PL_PO } /* gc=po */, - { 32, 6616, 0, 10, 0, PL_DEP } /* deprecated */, - { 0, 6706, 8660, 10, 3, PL_IN__2_DOT_1 } /* presentin=2.1 */, - { 0, 7991, 0, 5, 0, PL_BUHD } /* buhid */, - { 154, 7136, 7513, 6, 7, PL_INMANDAIC } /* block=mandaic */, - { 0, 974, 8160, 24, 2, PL_CCC__13 } /* canonicalcombiningclass=13 */, - { 0, 7478, 7, 3, 1, PL_SC } /* issc */, - { 16, 7478, 7298, 4, 6, PL_SPECIALS } /* isspecials */, - { 8, 5544, 7756, 13, 6, PL_NV__900000 } /* numericvalue=900000 */, - { 1, 7136, 6241, 6, 11, PL_KATAKANAEXT } /* block=katakanaext */, - { 1, 7136, 2002, 6, 21, PL_ININSCRIPTIONALPARTHIAN } /* block=inscriptionalparthian */, - { 0, 974, 8642, 24, 3, PL_CCC__122 } /* canonicalcombiningclass=122 */, - { 135, 7136, 8066, 6, 5, PL_INORIYA } /* block=oriya */, - { 0, 7136, 5427, 6, 9, PL_INMALAYALAM } /* block=malayalam */, - { 0, 5245, 7997, 13, 2, PL_POSIXXDIGIT } /* asciihexdigit=y */, - { 2, 184, 1963, 2, 7, PL_RADICAL } /* isradical */, - { 0, 8216, 0, 4, 0, PL_ARMI } /* armi */, - { 0, 8376, 8923, 3, 2, PL_LB__H2 } /* lb=h2 */, - { 1, 7459, 8528, 3, 4, PL_SC__SYRC } /* sc=syrc */, - { 32, 4542, 7661, 3, 6, PL_TIRH } /* istirhuta */, - { 2, 8026, 4629, 5, 15, PL_LOE } /* inpc=visualorderleft */, - { 1, 8240, 8804, 3, 3, PL_BC__LRI } /* bc=lri */, - { 0, 8572, 7804, 4, 6, PL_WB__NL } /* wb=newline */, - { 1, 8376, 2163, 3, 2, PL_LB__GL } /* lb=gl */, - { 0, 4841, 0, 14, 0, PL_LATINEXTB } /* latinextendedb */, - { 7, 6596, 0, 10, 0, PL_COMPATJAMO } /* compatjamo */, - { 2, 8096, 6806, 4, 10, PL_WARA } /* scx=warangciti */, - { 0, 6554, 4135, 3, 6, PL_BRAI } /* inbraille */, - { 2, 6329, 2876, 11, 3, PL_XPOSIXDIGIT } /* numerictype=de */, - { 1, 7457, 1330, 5, 9, PL_INSC__CONSONANT } /* insc=consonant */, - { 1, 21, 6953, 2, 9, PL_LATINEXTD } /* inlatinextd */, - { 32, 5645, 3446, 10, 3, PL_BC__RLI } /* bidiclass=rli */, - { 0, 6713, 8732, 3, 3, PL_IN__5 } /* in=5.0 */, - { 1, 7136, 7618, 6, 7, PL_SUPPUAA } /* block=suppuaa */, - { 1, 6263, 58, 10, 2, PL_LB__ID } /* linebreak=id */, - { 1, 8340, 6606, 3, 10, PL_JG__DALATHRISH } /* jg=dalathrish */, - { 2, 6076, 7768, 11, 2, -PL_BIDIC } /* bidicontrol=f */, - { 224, 6484, 3223, 10, 2, -PL_IDC } /* idcontinue=n */, - { 10, 7136, 3594, 6, 9, PL_ARABICSUP } /* block=arabicsup */, - { 0, 8240, 2914, 4, 17, PL_BC__ET } /* bc=europeanterminator */, - { 1, 4284, 5177, 14, 6, PL_GCB__V } /* hangulsyllabletype=v */, - { 2, 7466, 3521, 5, 5, PL_XPOSIXBLANK } /* horizspace */, - { 0, 3129, 2895, 17, 8, PL_ETHI } /* scriptextensions=ethiopic */, - { 2, 6076, 3581, 11, 2, PL_BIDIC } /* bidicontrol=t */, - { 39, 3129, 7034, 17, 9, PL_PALM } /* scriptextensions=palmyrene */, - { 5, 7136, 4771, 6, 14, PL_INGREEK } /* block=greekandcoptic */, - { 0, 7852, 0, 6, 0, PL_KANBUN } /* kanbun */, - { 0, 7459, 8500, 3, 4, PL_SARB } /* sc=sarb */, - { 1, 8340, 3818, 3, 16, PL_JG__MANICHAEANSAMEKH } /* jg=manichaeansamekh */, - { 0, 8376, 125, 3, 2, PL_LB__CR } /* lb=cr */, - { 0, 3738, 0, 6, 0, PL_LATIN1 } /* latin1 */, - { 18, 7136, 8056, 6, 5, PL_INNUSHU } /* block=nushu */, - { 5, 7136, 7429, 6, 7, PL_DSRT } /* block=deseret */, - { 4, 8816, 8729, 3, 3, PL_NV__4_SLASH_5 } /* nv=4/5 */, - { 20, 6890, 4404, 4, 15, PL_INMEROITICCURSIVE } /* blk=meroiticcursive */, - { 29, 7840, 4616, 4, 13, PL_VEDICEXT } /* isvedicextensions */, - { 6, 3129, 2636, 17, 9, PL_MONG } /* scriptextensions=mongolian */, - { 0, 8376, 4452, 3, 2, PL_LB__QU } /* lb=qu */, - { 0, 4314, 5163, 13, 10, PL_JG__TEHMARBUTA } /* joininggroup=tehmarbuta */, - { 1, 8096, 2149, 4, 20, PL_HLUW } /* scx=anatolianhieroglyphs */, - { 0, 7459, 7660, 3, 7, PL_SC__TIRH } /* sc=tirhuta */, - { 0, 3356, 0, 17, 0, PL_CYRILLICEXTC } /* cyrillicextendedc */, - { 4, 4464, 26, 14, 1, PL_NFDQC__Y } /* nfdquickcheck=y */, - { 24, 7380, 8690, 4, 3, PL_CCC__AL } /* ccc=228 */, - { 21, 184, 3111, 2, 4, PL_RUMI } /* isrumi */, - { 1, 184, 6806, 2, 10, PL_WARA } /* iswarangciti */, - { 59, 8096, 2002, 4, 21, PL_PRTI } /* scx=inscriptionalparthian */, - { 1, 6756, 3223, 10, 3, -PL_SD } /* softdotted=no */, - { 5, 2985, 0, 3, 0, PL_IDS } /* ids */, - { 12, 974, 8636, 24, 3, PL_CCC__107 } /* canonicalcombiningclass=107 */, - { 0, 8436, 0, 4, 0, PL_NSHU } /* nshu */, - { 56, 6210, 1982, 3, 17, PL_CYRILLICSUP } /* incyrillicsupplement */, - { 1, 8263, 0, 2, 0, PL_MC } /* mc */, - { 0, 1448, 2734, 5, 16, PL_SUPARROWSC } /* insupplementalarrowsc */, - { 2, 6263, 6880, 10, 2, PL_LB__BB } /* linebreak=bb */, - { 0, 21, 4827, 2, 6, PL_KANGXI } /* inkangxi */, - { 5, 959, 0, 5, 0, PL_MUSIC } /* music */, - { 136, 7459, 7034, 3, 4, PL_PALM } /* sc=palm */, - { 0, 6506, 2, 3, 1, PL_YI } /* isyi */, - { 0, 8376, 3985, 3, 9, PL_LB__EM } /* lb=emodifier */, - { 2, 7459, 7436, 3, 7, PL_ELBA } /* sc=elbasan */, - { 56, 8376, 1392, 3, 9, PL_LB__SG } /* lb=surrogate */, - { 0, 6890, 7590, 4, 7, PL_INSHARADA } /* blk=sharada */, - { 2, 184, 7852, 2, 6, PL_KANBUN } /* iskanbun */, - { 2, 7906, 18, 6, 1, PL_KHAR } /* sc=khar */, - { 2, 184, 1982, 3, 20, PL_CYRILLICSUP } /* iscyrillicsupplementary */, - { 0, 8011, 3658, 3, 16, PL_PE } /* gc=closepunctuation */, - { 0, 186, 7997, 2, 2, PL_CE } /* ce=y */, - { 48, 7043, 0, 4, 0, PL_PAUC } /* pauc */, - { 0, 6890, 5363, 5, 12, PL_IPAEXT } /* blk=ipaextensions */, - { 7, 7226, 5253, 6, 5, PL_XPOSIXDIGIT } /* xposixdigit */, - { 19, 6890, 7653, 4, 7, PL_INTIBETAN } /* blk=tibetan */, - { 4, 8096, 2895, 4, 8, PL_ETHI } /* scx=ethiopic */, - { 0, 8816, 8187, 3, 2, PL_NV__27 } /* nv=27 */, - { 1, 4757, 7951, 14, 5, PL_GREXT } /* graphemeextend=true */, - { 0, 7120, 0, 4, 0, PL_BALI } /* bali */, - { 0, 7459, 2598, 3, 4, PL_MERO } /* sc=mero */, - { 1, 5134, 6030, 3, 7, PL_PHAISTOS } /* isphaistos */, - { 2, 4923, 7522, 4, 5, PL_INMARCHEN } /* inmarchen */, - { 1, 8240, 6017, 3, 12, PL_BC__ON } /* bc=otherneutral */, - { 9, 8572, 24, 4, 1, PL_WB__NL } /* wb=nl */, - { 3, 4134, 0, 7, 0, PL_BRAI } /* braille */, - { 0, 3129, 4104, 17, 5, PL_BAMU } /* scriptextensions=bamum */, - { 144, 4314, 8334, 13, 4, PL_JG__SHIN } /* joininggroup=shin */, - { 0, 7459, 8408, 3, 4, PL_MRO } /* sc=mroo */, - { 0, 6706, 8564, 10, 4, PL_IN__10 } /* presentin=v100 */, - { 1, 3129, 1401, 17, 4, PL_SIND } /* scriptextensions=sind */, - { 0, 8340, 5163, 3, 10, PL_JG__TEHMARBUTA } /* jg=tehmarbuta */, - { 0, 7380, 8160, 7, 2, PL_CCC__13 } /* ccc=ccc13 */, - { 1, 7457, 5999, 5, 6, PL_LB__ZWJ } /* insc=joiner */, - { 0, 2221, 2244, 3, 2, PL_GCB__L } /* hst=l */, - { 3, 184, 966, 2, 2, PL_NO } /* isno */, - { 44, 3129, 8268, 17, 4, PL_CPRT } /* scriptextensions=cprt */, - { 39, 184, 8408, 2, 4, PL_MRO } /* ismroo */, - { 0, 8572, 3985, 3, 9, PL_LB__EM } /* wb=emodifier */, - { 0, 8096, 4135, 5, 6, PL_BRAI } /* scx=braille */, - { 8, 5557, 7951, 13, 5, PL_PATSYN } /* patternsyntax=true */, - { 1, 7380, 8687, 4, 3, PL_CCC__R } /* ccc=226 */, - { 0, 7459, 3610, 3, 8, PL_SC__BOPO } /* sc=bopomofo */, - { 3, 184, 1589, 2, 5, PL_LATN } /* islatin */, - { 0, 21, 5246, 3, 4, PL_ASCII } /* inascii */, - { 0, 2236, 1013, 10, 5, PL_L } /* category=letter */, - { 0, 5968, 8072, 3, 4, PL_INOSAGE } /* inosage */, - { 3, 4554, 24, 15, 1, PL_SB__CL } /* sentencebreak=cl */, - { 3, 2229, 1690, 16, 2, PL_CN } /* generalcategory=cn */, - { 0, 4010, 0, 6, 0, PL_TANG } /* tangut */, - { 0, 7459, 7144, 3, 4, PL_SC__BUGI } /* sc=bugi */, - { 56, 8272, 7997, 4, 2, PL_CWCF } /* cwcf=y */, - { 6, 7918, 0, 6, 0, PL_THAA } /* thaana */, - { 0, 4314, 6606, 13, 10, PL_JG__DALATHRISH } /* joininggroup=dalathrish */, - { 3, 2750, 3223, 4, 2, -PL_TERM } /* term=n */, - { 3, 6109, 2170, 10, 19, PL_PC } /* category=connectorpunctuation */, - { 54, 7994, 1, 4, 1, -PL_IDC } /* idc=n */, - { 1, 6472, 6395, 10, 11, PL_WB__SQ } /* wordbreak=singlequote */, - { 1, 6890, 7660, 4, 7, PL_INTIRHUTA } /* blk=tirhuta */, - { 0, 974, 8, 24, 1, PL_CCC__A } /* canonicalcombiningclass=a */, - { 0, 1876, 0, 21, 0, PL_CWL } /* changeswhenlowercased */, - { 1, 1354, 7768, 24, 6, -PL_COMPEX } /* fullcompositionexclusion=false */, - { 3, 7136, 2877, 6, 10, PL_INDEVANAGARI } /* block=devanagari */, - { 64, 4554, 7070, 14, 9, PL_SB__SC } /* sentencebreak=scontinue */, - { 3, 8076, 7951, 5, 5, PL_PATWS } /* patws=true */, - { 98, 1417, 295, 9, 2, PL_SM } /* category=sm */, - { 0, 4542, 8553, 3, 3, PL_TGLG } /* istglg */, - { 0, 7380, 8, 4, 1, PL_CCC__A } /* ccc=a */, - { 0, 8096, 7359, 4, 7, PL_AVST } /* scx=avestan */, - { 2, 720, 0, 30, 0, PL_ENCLOSEDALPHANUMSUP } /* enclosedalphanumericsupplement */, - { 0, 7689, 6538, 4, 8, PL_ARABICEXTA } /* isarabicexta */, - { 1, 3129, 7597, 17, 7, PL_SHAW } /* scriptextensions=shavian */, - { 1, 78, 0, 35, 0, PL_ARABICMATH } /* arabicmathematicalalphabeticsymbols */, - { 1, 7288, 1107, 7, 8, PL_SC__KANA } /* script=katakana */, - { 0, 8011, 1797, 3, 14, PL_LM } /* gc=modifierletter */, - { 1, 7380, 8916, 7, 2, PL_CCC__84 } /* ccc=ccc84 */, - { 0, 7471, 468, 7, 5, PL_POSIXPUNCT } /* isposixpunct */, - { 2, 6219, 7997, 11, 4, PL_JOINC } /* joincontrol=yes */, - { 1, 5336, 0, 8, 0, PL_GREEKEXT } /* greekext */, - { 69, 8096, 7145, 5, 3, PL_BUGI } /* scx=bugi */, - { 21, 6554, 6547, 3, 9, PL_ASCII } /* inbasiclatin */, - { 71, 6029, 0, 8, 0, PL_PHAISTOS } /* phaistos */, - { 1, 96, 7997, 10, 4, PL_XPOSIXALPHA } /* alphabetic=yes */, - { 3, 7689, 6874, 4, 7, PL_ARABICPFB } /* isarabicpfb */, - { 5, 5544, 8187, 13, 2, PL_NV__27 } /* numericvalue=27 */, - { 59, 1402, 6450, 24, 11, PL_INPC__TOPANDRIGHT } /* indicpositionalcategory=topandright */, - { 0, 8096, 8388, 4, 4, PL_LISU } /* scx=lisu */, - { 0, 6554, 4105, 3, 14, PL_BAMUMSUP } /* inbamumsupplement */, - { 7, 2100, 8062, 3, 4, PL_OGAM } /* isogham */, - { 0, 1503, 751, 3, 28, PL_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsupplement */, - { 0, 8560, 0, 4, 0, PL_TIBT } /* tibt */, - { 1, 8816, 8673, 3, 2, PL_NV__14 } /* nv=14 */, - { 0, 8572, 1107, 3, 2, PL_WB__KA } /* wb=ka */, - { 0, 3129, 8476, 17, 4, PL_COPT } /* scriptextensions=qaac */, - { 3, 8196, 7714, 4, 1, PL_AGE__3 } /* age=3 */, - { 5, 1746, 4561, 21, 2, PL_WB__EB } /* graphemeclusterbreak=eb */, - { 1, 184, 954, 2, 5, PL_GREK } /* isgreek */, - { 4, 6890, 6041, 4, 12, PL_PLAYINGCARDS } /* blk=playingcards */, - { 9, 7136, 5681, 6, 12, PL_CYRILLICEXTA } /* block=cyrillicexta */, - { 0, 5557, 3223, 13, 2, -PL_PATSYN } /* patternsyntax=n */, - { 0, 7459, 7956, 3, 5, PL_SC__ADLM } /* sc=adlam */, - { 0, 7380, 184, 4, 2, PL_CCC__IS } /* ccc=is */, - { 2, 7256, 0, 8, 0, PL_KANAEXTA } /* kanaexta */, - { 198, 1797, 0, 4, 0, PL_MODI } /* modi */, - { 3, 6890, 1939, 4, 21, PL_CJKCOMPATFORMS } /* blk=cjkcompatibilityforms */, - { 5, 8096, 8556, 4, 4, PL_THAI } /* scx=thai */, - { 1, 7034, 0, 4, 0, PL_PALM } /* palm */, - { 2, 415, 3581, 11, 2, PL_IDEO } /* ideographic=t */, - { 0, 7136, 2128, 6, 21, PL_YIJING } /* block=yijinghexagramsymbols */, - { 0, 2503, 0, 19, 0, PL_ENCLOSEDALPHANUMSUP } /* enclosedalphanumsup */, - { 1, 283, 0, 33, 0, PL_MISCMATHSYMBOLSA } /* miscellaneousmathematicalsymbolsa */, - { 0, 7288, 7499, 7, 7, PL_SC__KALI } /* script=kayahli */, - { 14, 8096, 8548, 4, 4, PL_TFNG } /* scx=tfng */, - { 55, 7822, 0, 6, 0, PL_HATR } /* hatran */, - { 0, 7168, 0, 8, 0, PL_EXT } /* extender */, - { 14, 184, 8424, 2, 4, PL_NBAT } /* isnbat */, - { 9, 4542, 1813, 3, 14, PL_TRANSPORTANDMAP } /* istransportandmap */, - { 1, 6890, 4687, 4, 14, PL_CJKCOMPATFORMS } /* blk=cjkcompatforms */, - { 1, 8340, 4967, 3, 14, PL_JG__MANICHAEANKAPH } /* jg=manichaeankaph */, - { 1, 7459, 7016, 3, 9, PL_SC__PERM } /* sc=oldpermic */, - { 4, 7288, 7443, 7, 4, PL_SC__GRAN } /* script=gran */, - { 0, 8016, 34, 4, 6, PL_GREXT } /* gcb=extend */, - { 12, 6890, 3674, 4, 16, PL_CYPRIOTSYLLABARY } /* blk=cypriotsyllabary */, - { 1, 7136, 7569, 6, 7, PL_INOSMANYA } /* block=osmanya */, - { 0, 5414, 0, 13, 0, PL_LOWSURROGATES } /* lowsurrogates */, - { 0, 8011, 27, 3, 2, PL_LL } /* gc=ll */, - { 6, 8096, 8348, 4, 4, PL_KALI } /* scx=kali */, - { 0, 8096, 3994, 4, 6, PL_SYRC } /* scx=syriac */, - { 2, 6890, 3021, 4, 9, PL_LATINEXTA } /* blk=latinexta */, - { 0, 4314, 7176, 13, 8, PL_JG__FARSIYEH } /* joininggroup=farsiyeh */, - { 69, 2985, 3223, 3, 2, -PL_IDS } /* ids=n */, - { 24, 6554, 1108, 3, 4, PL_INBATAK } /* inbatak */, - { 7, 4464, 17, 15, 1, PL_DT__CAN } /* nfdquickcheck=no */, - { 0, 186, 7951, 2, 5, PL_CE } /* ce=true */, - { 6, 382, 0, 33, 0, PL_SUPSYMBOLSANDPICTOGRAPHS } /* supplementalsymbolsandpictographs */, - { 1, 6554, 6567, 3, 9, PL_BOXDRAWING } /* inboxdrawing */, - { 2, 6890, 3722, 4, 16, PL_HIGHPUSURROGATES } /* blk=highpusurrogates */, - { 0, 6210, 2788, 3, 7, PL_INCHEROKEE } /* incherokee */, - { 35, 7478, 6440, 3, 10, PL_SYLO } /* issylotinagri */, - { 0, 7380, 2777, 4, 10, PL_CCC__AR } /* ccc=aboveright */, - { 21, 8016, 24, 4, 1, PL_GCB__L } /* gcb=l */, - { 0, 7459, 8588, 3, 4, PL_SC__YI } /* sc=yiii */, - { 6, 6263, 8457, 10, 2, PL_LB__SG } /* linebreak=sg */, - { 0, 415, 7768, 11, 2, -PL_IDEO } /* ideographic=f */, - { 0, 7828, 7768, 6, 2, -PL_HYPHEN } /* hyphen=f */, - { 130, 2787, 0, 11, 0, PL_CHEROKEESUP } /* cherokeesup */, - { 2, 8096, 8316, 4, 4, PL_HANO } /* scx=hano */, - { 37, 8552, 0, 4, 0, PL_TGLG } /* tglg */, - { 15, 6890, 2107, 4, 7, PL_INSINHALA } /* blk=sinhala */, - { 1, 1448, 7297, 3, 7, PL_SPECIALS } /* inspecials */, - { 0, 6890, 6307, 4, 11, PL_MYANMAREXTA } /* blk=myanmarexta */, - { 46, 4284, 0, 15, 0, PL_INHANGUL } /* hangulsyllables */, - { 15, 7288, 1566, 7, 6, PL_SC__HANG } /* script=hangul */, - { 5, 184, 3458, 2, 4, PL_MANI } /* ismani */, - { 15, 8798, 7768, 3, 6, -PL_LOE } /* loe=false */, - { 1, 7288, 1981, 7, 8, PL_SC__CYRL } /* script=cyrillic */, - { 0, 1746, 5083, 22, 10, PL_GCB__SM } /* graphemeclusterbreak=spacingmark */, - { 6, 6554, 1498, 3, 22, PL_BYZANTINEMUSIC } /* inbyzantinemusicalsymbols */, - { 0, 8096, 7129, 5, 7, PL_BASS } /* scx=bassavah */, - { 1, 6890, 113, 4, 25, PL_DIACRITICALS } /* blk=combiningdiacriticalmarks */, - { 2, 6472, 73, 10, 2, PL_LB__EM } /* wordbreak=em */, - { 0, 8376, 21, 3, 2, PL_LB__IN } /* lb=in */, - { 0, 8816, 7702, 3, 1, PL_NV__2 } /* nv=2 */, - { 1, 5544, 7750, 13, 1, PL_NV__8 } /* numericvalue=8 */, - { 2, 4542, 8545, 3, 3, PL_TAVT } /* istavt */, - { 0, 4314, 5897, 13, 12, PL_JG__MALAYALAMSSA } /* joininggroup=malayalamssa */, - { 0, 4089, 0, 15, 0, PL_ARABICEXTA } /* arabicextendeda */, - { 0, 7136, 2465, 6, 19, PL_COUNTINGROD } /* block=countingrodnumerals */, - { 0, 1887, 7768, 5, 6, -PL_XPOSIXLOWER } /* lower=false */, - { 1, 2229, 38, 16, 2, PL_XPOSIXDIGIT } /* generalcategory=nd */, - { 135, 2859, 7792, 18, 6, PL_DT__ENC } /* decompositiontype=circle */, - { 1, 3147, 0, 18, 0, PL_TAIXUANJING } /* taixuanjingsymbols */, - { 0, 8572, 108, 3, 2, PL_WB__MB } /* wb=mb */, - { 10, 8340, 6636, 3, 10, PL_JG__KNOTTEDHEH } /* jg=knottedheh */, - { 1, 7136, 7043, 6, 9, PL_INPAUCINHAU } /* block=paucinhau */, - { 68, 7034, 0, 9, 0, PL_PALM } /* palmyrene */, - { 37, 7136, 4299, 6, 15, PL_INIMPERIALARAMAIC } /* block=imperialaramaic */, - { 26, 1354, 3223, 24, 2, -PL_COMPEX } /* fullcompositionexclusion=n */, - { 0, 8816, 8915, 3, 2, PL_NV__48 } /* nv=48 */, - { 6, 184, 133, 2, 4, PL_M } /* ismark */, - { 0, 8096, 7443, 4, 7, PL_GRAN } /* scx=grantha */, - { 64, 5544, 7709, 13, 2, PL_NV__16 } /* numericvalue=16 */, - { 0, 8196, 8657, 4, 3, PL_AGE__2 } /* age=2.0 */, - { 37, 1426, 4179, 22, 15, PL_INSC__CONSONANTMEDIAL } /* indicsyllabiccategory=consonantmedial */, - { 130, 2100, 6007, 4, 10, PL_HUNG } /* isoldhungarian */, - { 1, 8376, 96, 3, 10, PL_LB__AL } /* lb=alphabetic */, - { 0, 8011, 8009, 3, 2, PL_CF } /* gc=cf */, - { 4, 4554, 138, 14, 2, PL_SB__FO } /* sentencebreak=fo */, - { 88, 6890, 6536, 4, 10, PL_ARABICEXTA } /* blk=arabicexta */, - { 5, 184, 8281, 3, 3, PL_CYRL } /* iscyrl */, - { 0, 7136, 4269, 6, 15, PL_DIACRITICALSSUP } /* block=diacriticalssup */, - { 0, 6890, 0, 4, 42, PL_UCASEXT } /* blk=unifiedcanadianaboriginalsyllabicsextended */, - { 0, 8011, 3854, 3, 10, PL_SM } /* gc=mathsymbol */, - { 0, 3509, 0, 17, 0, PL_PATWS } /* patternwhitespace */, - { 9, 4314, 8392, 13, 4, PL_JG__MEEM } /* joininggroup=meem */, - { 0, 7689, 7106, 4, 6, PL_ARMN } /* isarmenian */, - { 0, 4590, 3581, 2, 2, PL_VS } /* vs=t */, - { 50, 6890, 3594, 4, 16, PL_ARABICSUP } /* blk=arabicsupplement */, - { 0, 184, 8937, 2, 2, PL_ZL } /* iszl */, - { 0, 8096, 7810, 4, 4, PL_GOTH } /* scx=goth */, - { 9, 7136, 3390, 6, 16, PL_ETHIOPICEXT } /* block=ethiopicextended */, - { 66, 2100, 1487, 4, 2, PL_OLCK } /* isolck */, - { 4, 8096, 3458, 4, 10, PL_MANI } /* scx=manichaean */, - { 124, 8340, 7176, 3, 8, PL_JG__FARSIYEH } /* jg=farsiyeh */, - { 15, 7459, 7436, 3, 4, PL_ELBA } /* sc=elba */, - { 2, 21, 5801, 2, 12, PL_KHMERSYMBOLS } /* inkhmersymbols */, - { 19, 6890, 2249, 4, 10, PL_INGLAGOLITIC } /* blk=glagolitic */, - { 2, 5825, 0, 4, 0, PL_MAHJ } /* mahj */, - { 6, 7689, 948, 3, 26, PL_ANCIENTGREEKMUSIC } /* isancientgreekmusicalnotation */, - { 0, 7689, 97, 3, 9, PL_XPOSIXALPHA } /* isalphabetic */, - { 96, 7459, 7025, 3, 9, PL_ORKH } /* sc=oldturkic */, - { 8, 8208, 0, 4, 0, PL_AHOM } /* ahom */, - { 1, 7288, 7043, 7, 4, PL_PAUC } /* script=pauc */, - { 0, 7136, 3057, 6, 18, PL_ORNAMENTALDINGBATS } /* block=ornamentaldingbats */, - { 0, 8572, 5435, 3, 2, PL_WB__ML } /* wb=ml */, - { 1, 8096, 7822, 4, 6, PL_HATR } /* scx=hatran */, - { 21, 8816, 8911, 3, 2, PL_NV__46 } /* nv=46 */, - { 0, 974, 8651, 27, 3, PL_CCC__132 } /* canonicalcombiningclass=ccc132 */, - { 0, 7478, 383, 3, 32, PL_SUPSYMBOLSANDPICTOGRAPHS } /* issupplementalsymbolsandpictographs */, - { 170, 7136, 4224, 6, 15, PL_CURRENCYSYMBOLS } /* block=currencysymbols */, - { 0, 3962, 0, 16, 0, PL_SUPMATHOPERATORS } /* supmathoperators */, - { 0, 7136, 2541, 6, 10, PL_JAMO } /* block=hanguljamo */, - { 0, 6706, 8759, 10, 3, PL_IN__7 } /* presentin=7.0 */, - { 0, 7288, 8237, 8, 3, PL_BATK } /* script=batk */, - { 0, 184, 1359, 3, 19, PL_CE } /* iscompositionexclusion */, - { 0, 6263, 3658, 10, 16, PL_LB__CL } /* linebreak=closepunctuation */, - { 4, 7136, 690, 6, 30, PL_CUNEIFORMNUMBERS } /* block=cuneiformnumbersandpunctuation */, - { 15, 8340, 7448, 3, 3, PL_JG__HAH } /* jg=hah */, - { 0, 7226, 468, 6, 5, PL_XPOSIXPUNCT } /* xposixpunct */, - { 51, 5544, 8630, 13, 3, PL_NV__1_SLASH_9 } /* numericvalue=1/9 */, - { 1, 8324, 0, 4, 0, PL_HMNG } /* hmng */, - { 2, 7492, 0, 7, 0, PL_KNDA } /* kannada */, - { 0, 1417, 5135, 9, 14, PL_ZS } /* category=spaceseparator */, - { 0, 8240, 1, 4, 1, PL_BC__EN } /* bc=en */, - { 86, 3738, 0, 16, 0, PL_LATIN1 } /* latin1supplement */, - { 35, 217, 7345, 6, 7, PL__PERL_IDSTART } /* _perl_idstart */, - { 6, 6890, 6806, 4, 10, PL_INWARANGCITI } /* blk=warangciti */, - { 4, 6472, 108, 10, 2, PL_WB__MB } /* wordbreak=mb */, - { 0, 7288, 4299, 7, 15, PL_ARMI } /* script=imperialaramaic */, - { 7, 2859, 4653, 18, 6, PL_DT__SQR } /* decompositiontype=square */, - { 53, 6483, 0, 4, 0, PL_XIDC } /* xidc */, - { 1, 6263, 23, 10, 2, PL_LB__AL } /* linebreak=al */, - { 29, 8096, 7611, 4, 7, PL_SOYO } /* scx=soyombo */, - { 0, 8036, 6798, 4, 8, PL_CN } /* isunassigned */, - { 0, 974, 8642, 27, 3, PL_CCC__122 } /* canonicalcombiningclass=ccc122 */, - { 2, 7696, 7768, 6, 2, -PL_XPOSIXSPACE } /* wspace=f */, - { 1, 6263, 6197, 10, 11, PL_LB__IN } /* linebreak=inseperable */, - { 77, 974, 7744, 24, 1, PL_CCC__7 } /* canonicalcombiningclass=7 */, - { 1, 3946, 7997, 16, 4, PL_STERM } /* sentenceterminal=yes */, - { 3, 6208, 7951, 5, 5, PL_JOINC } /* joinc=true */, - { 2, 7136, 7780, 6, 6, PL_INCARIAN } /* block=carian */, - { 20, 1306, 0, 13, 0, PL_M } /* combiningmark */, - { 37, 6109, 4225, 10, 13, PL_SC } /* category=currencysymbol */, - { 1, 7459, 5777, 3, 4, PL_HEBR } /* sc=hebr */, - { 0, 1417, 468, 9, 5, PL_P } /* category=punct */, - { 0, 6890, 7971, 4, 5, PL_INBATAK } /* blk=batak */, - { 1, 7459, 7007, 3, 9, PL_ITAL } /* sc=olditalic */, - { 1, 6208, 7997, 5, 2, PL_JOINC } /* joinc=y */, - { 4, 8096, 2636, 4, 9, PL_MONG } /* scx=mongolian */, - { 0, 184, 2598, 2, 4, PL_MERO } /* ismero */, - { 3, 7136, 283, 6, 33, PL_MISCMATHSYMBOLSA } /* block=miscellaneousmathematicalsymbolsa */, - { 3, 11, 3223, 2, 3, -PL_DI } /* di=no */, - { 9, 7459, 3994, 3, 6, PL_SC__SYRC } /* sc=syriac */, - { 9, 8240, 5079, 3, 14, PL_BC__NSM } /* bc=nonspacingmark */, - { 3, 3516, 7997, 10, 4, PL_XPOSIXSPACE } /* whitespace=yes */, - { 2, 7224, 5252, 8, 6, PL_XPOSIXXDIGIT } /* isxposixxdigit */, - { 3, 974, 8685, 27, 2, PL_CCC__24 } /* canonicalcombiningclass=ccc24 */, - { 170, 7168, 3581, 8, 2, PL_EXT } /* extender=t */, - { 25, 7136, 600, 6, 30, PL_CJKEXTD } /* block=cjkunifiedideographsextensiond */, - { 0, 7478, 7598, 3, 6, PL_SHAW } /* isshavian */, - { 5, 7144, 0, 4, 0, PL_BUGI } /* bugi */, - { 1, 1686, 0, 16, 0, PL_INDICNUMBERFORMS } /* indicnumberforms */, - { 2, 8288, 3003, 3, 4, PL_DT__INIT } /* dt=init */, - { 12, 184, 6546, 2, 10, PL_ASCII } /* isbasiclatin */, - { 25, 184, 3610, 2, 8, PL_BOPO } /* isbopomofo */, - { 0, 8240, 8813, 3, 3, PL_BC__NSM } /* bc=nsm */, - { 7, 8011, 6362, 3, 11, PL_SO } /* gc=othersymbol */, - { 1, 7288, 8296, 7, 4, PL_GONM } /* script=gonm */, - { 5, 7136, 42, 6, 16, PL_CJKCOMPAT } /* block=cjkcompatibility */, - { 8, 6210, 601, 3, 29, PL_CJKEXTD } /* incjkunifiedideographsextensiond */, - { 16, 4402, 1798, 3, 14, PL_MODIFIERLETTERS } /* inmodifierletters */, - { 3, 8816, 7720, 3, 5, PL_NV__40000 } /* nv=40000 */, - { 2, 7168, 7768, 8, 6, -PL_EXT } /* extender=false */, - { 0, 6713, 8768, 3, 3, PL_IN__9 } /* in=9.0 */, - { 53, 7689, 6799, 3, 7, PL_ASSIGNED } /* isassigned */, - { 1, 8572, 72, 3, 2, PL_WB__LE } /* wb=le */, - { 2, 7168, 7768, 8, 2, -PL_EXT } /* extender=f */, - { 1, 7689, 4660, 3, 13, PL_ANCIENTSYMBOLS } /* isancientsymbols */, - { 0, 8816, 7744, 3, 2, PL_NV__70 } /* nv=70 */, - { 0, 96, 7768, 5, 6, -PL_XPOSIXALPHA } /* alpha=false */, - { 23, 974, 8646, 24, 2, PL_CCC__29 } /* canonicalcombiningclass=29 */, - { 134, 8340, 5009, 3, 14, PL_JG__MANICHAEANTETH } /* jg=manichaeanteth */, - { 56, 184, 7144, 2, 8, PL_BUGI } /* isbuginese */, - { 1, 18, 7951, 2, 5, PL_RI } /* ri=true */, - { 0, 6428, 0, 11, 0, PL_SUPERANDSUB } /* superandsub */, - { 2, 8196, 8882, 4, 3, PL_AGE__6_DOT_3 } /* age=v63 */, - { 0, 974, 7714, 27, 2, PL_CCC__30 } /* canonicalcombiningclass=ccc30 */, - { 32, 8504, 72, 3, 2, PL_SB__LE } /* sb=le */, - { 12, 7828, 7951, 6, 5, PL_HYPHEN } /* hyphen=true */, - { 8, 7380, 3254, 4, 13, PL_CCC__202 } /* ccc=attachedbelow */, - { 1, 5362, 0, 6, 0, PL_IPAEXT } /* ipaext */, - { 0, 7288, 2636, 7, 4, PL_SC__MONG } /* script=mong */, - { 32, 184, 3738, 2, 16, PL_LATIN1 } /* islatin1supplement */, - { 0, 8096, 7152, 4, 4, PL_DUPL } /* scx=dupl */, - { 1, 3129, 2598, 17, 4, PL_MERO } /* scriptextensions=mero */, - { 15, 3129, 8388, 17, 4, PL_LISU } /* scriptextensions=lisu */, - { 1, 7136, 6646, 6, 10, PL_MISCARROWS } /* block=miscarrows */, - { 133, 184, 24, 2, 1, PL_L } /* isl */, - { 1, 4464, 7996, 4, 3, PL_NFDQC__Y } /* nfdqc=y */, - { 0, 7380, 7708, 4, 3, PL_CCC__216 } /* ccc=216 */, - { 0, 7459, 4134, 3, 7, PL_BRAI } /* sc=braille */, - { 0, 7380, 7708, 4, 2, PL_CCC__21 } /* ccc=21 */, - { 178, 1426, 4715, 22, 14, PL_INSC__CONSONANTFINAL } /* indicsyllabiccategory=consonantfinal */, - { 0, 4757, 7997, 14, 2, PL_GREXT } /* graphemeextend=y */, - { 13, 184, 1372, 2, 2, PL_LU } /* islu */, - { 5, 21, 3738, 2, 9, PL_LATIN1 } /* inlatin1sup */, - { 0, 8376, 5669, 3, 12, PL_LB__SY } /* lb=breaksymbols */, - { 0, 2246, 2486, 4, 17, PL_INEGYPTIANHIEROGLYPHS } /* inegyptianhieroglyphs */, - { 0, 4554, 49, 14, 2, PL_SB__AT } /* sentencebreak=at */, - { 1, 6506, 2129, 3, 20, PL_YIJING } /* isyijinghexagramsymbols */, - { 4, 3509, 3223, 17, 2, -PL_PATWS } /* patternwhitespace=n */, - { 2, 2369, 3212, 20, 7, PL_VO__U } /* verticalorientation=upright */, - { 0, 7345, 7997, 7, 2, PL_IDS } /* idstart=y */, - { 0, 8376, 1204, 3, 2, PL_LB__PO } /* lb=po */, - { 6, 8096, 6406, 4, 11, PL_SORA } /* scx=sorasompeng */, - { 76, 8016, 125, 4, 2, PL_LB__CR } /* gcb=cr */, - { 154, 3290, 0, 4, 0, PL_UCAS } /* ucas */, - { 14, 184, 4225, 3, 13, PL_SC } /* iscurrencysymbol */, - { 25, 8011, 3914, 3, 5, PL_C } /* gc=other */, - { 4, 2128, 0, 6, 0, PL_YIJING } /* yijing */, - { 0, 2108, 1812, 4, 4, PL_INHATRAN } /* inhatran */, - { 0, 6647, 6100, 4, 9, PL_L_AMP_ } /* iscasedletter */, - { 3, 8340, 6274, 3, 11, PL_JG__MALAYALAMJA } /* jg=malayalamja */, - { 1, 7136, 1960, 6, 21, PL_CJKRADICALSSUP } /* block=cjkradicalssupplement */, - { 29, 3003, 0, 18, 0, PL_PI } /* initialpunctuation */, - { 7, 2221, 4046, 3, 4, PL_LB__H3 } /* hst=lvt */, - { 12, 1417, 1392, 9, 9, PL_CS } /* category=surrogate */, - { 1, 974, 8632, 24, 2, PL_CCC__91 } /* canonicalcombiningclass=91 */, - { 47, 7380, 8224, 4, 4, PL_CCC__216 } /* ccc=atar */, - { 0, 4687, 0, 14, 0, PL_CJKCOMPATFORMS } /* cjkcompatforms */, - { 0, 8044, 0, 4, 0, PL_PHLI } /* phli */, - { 8, 8096, 4784, 4, 4, PL_CHAM } /* scx=cham */, - { 60, 7007, 0, 9, 0, PL_ITAL } /* olditalic */, - { 0, 7380, 5220, 4, 1, PL_CCC__0 } /* ccc=0 */, - { 25, 1876, 7997, 21, 2, PL_CWL } /* changeswhenlowercased=y */, - { 0, 6890, 1635, 4, 23, PL_SUPPUNCTUATION } /* blk=supplementalpunctuation */, - { 324, 3129, 3288, 17, 17, PL_AGHB } /* scriptextensions=caucasianalbanian */, - { 0, 7136, 8400, 6, 4, PL_INMIAO } /* block=miao */, - { 4, 7136, 1589, 6, 9, PL_LATINEXTE } /* block=latinexte */, - { 0, 6890, 5957, 4, 12, PL_INMENDEKIKAKUI } /* blk=mendekikakui */, - { 0, 7478, 2675, 3, 3, PL_SUND } /* issund */, - { 0, 8608, 0, 4, 0, PL_ZZZZ } /* zzzz */, - { 0, 1746, 4047, 21, 3, PL_LB__H3 } /* graphemeclusterbreak=lvt */, - { 2, 184, 982, 2, 2, PL_L_AMP_ } /* islc */, - { 52, 184, 8492, 2, 4, PL_RUNR } /* isrunr */, - { 1, 7136, 892, 6, 18, PL_INVS } /* block=variationselectors */, - { 135, 3129, 2002, 17, 21, PL_PRTI } /* scriptextensions=inscriptionalparthian */, - { 72, 1876, 7997, 21, 4, PL_CWL } /* changeswhenlowercased=yes */, - { 82, 8288, 2369, 3, 8, PL_DT__VERT } /* dt=vertical */, - { 13, 7226, 8001, 6, 5, PL_XPOSIXCNTRL } /* xposixcntrl */, - { 5, 6890, 1282, 4, 24, PL_CJKSYMBOLS } /* blk=cjksymbolsandpunctuation */, - { 0, 6890, 6926, 4, 9, PL_INKHUDAWADI } /* blk=khudawadi */, - { 1, 3129, 7272, 17, 8, PL_MAHJ } /* scriptextensions=mahajani */, - { 4, 8468, 0, 4, 0, PL_MIAO } /* plrd */, - { 3, 8096, 2598, 4, 19, PL_MERO } /* scx=meroitichieroglyphs */, - { 2, 3129, 6626, 17, 4, PL_KHAR } /* scriptextensions=khar */, - { 4, 974, 8681, 24, 3, PL_CCC__BR } /* canonicalcombiningclass=222 */, - { 2, 6890, 6881, 4, 9, PL_INBHAIKSUKI } /* blk=bhaiksuki */, - { 2, 8096, 8071, 4, 5, PL_OSGE } /* scx=osage */, - { 3, 8894, 1548, 3, 2, PL_VO__TR } /* vo=tr */, - { 3, 7366, 0, 4, 0, PL_BENG } /* beng */, - { 10, 4449, 26, 14, 1, PL_NFCQC__Y } /* nfcquickcheck=y */, - { 1, 4542, 7633, 3, 6, PL_TGLG } /* istagalog */, - { 0, 2229, 5253, 16, 5, PL_XPOSIXDIGIT } /* generalcategory=digit */, - { 14, 1448, 6737, 3, 9, PL_INSAURASHTRA } /* insaurashtra */, - { 0, 6890, 7408, 4, 7, PL_CJKEXTD } /* blk=cjkextd */, - { 0, 8816, 8617, 3, 2, PL_NV__31 } /* nv=31 */, - { 4, 6210, 1659, 3, 21, PL_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatideographssup */, - { 2, 2787, 0, 4, 0, PL_CHER } /* cher */, - { 26, 8816, 7726, 3, 6, PL_NV__432000 } /* nv=432000 */, - { 0, 7380, 2289, 4, 4, PL_CCC__L } /* ccc=left */, - { 2, 8376, 496, 3, 2, PL_LB__NU } /* lb=nu */, - { 3, 184, 7499, 2, 7, PL_KALI } /* iskayahli */, - { 129, 7136, 3271, 6, 17, PL_UCAS } /* block=canadiansyllabics */, - { 1, 2229, 699, 16, 6, PL_N } /* generalcategory=number */, - { 226, 6554, 2409, 3, 5, PL_INBRAHMI } /* inbrahmi */, - { 4, 1206, 7647, 3, 6, PL_INTAIVIET } /* intaiviet */, - { 0, 5765, 7997, 12, 4, PL_GRBASE } /* graphemebase=yes */, - { 50, 4419, 0, 15, 0, PL_MISCPICTOGRAPHS } /* miscpictographs */, - { 0, 7288, 5400, 8, 7, PL_BALI } /* script=balinese */, - { 1, 8011, 3690, 3, 16, PL_PF } /* gc=finalpunctuation */, - { 0, 7459, 8424, 3, 4, PL_NBAT } /* sc=nbat */, - { 0, 7136, 6776, 6, 10, PL_SUPARROWSB } /* block=suparrowsb */, - { 0, 8021, 7997, 5, 2, PL_GREXT } /* grext=y */, - { 0, 6713, 8711, 3, 3, PL_IN__3_DOT_1 } /* in=3.1 */, - { 1, 6706, 8657, 10, 3, PL_IN__2 } /* presentin=2.0 */, - { 131, 7459, 8432, 3, 4, PL_NKO } /* sc=nkoo */, - { 0, 8016, 1690, 4, 2, PL_GCB__CN } /* gcb=cn */, - { 0, 5134, 6042, 3, 11, PL_PLAYINGCARDS } /* isplayingcards */, - { 5, 4440, 2251, 4, 18, PL_GLAGOLITICSUP } /* inglagoliticsupplement */, - { 263, 6263, 7264, 10, 8, PL_LB__LF } /* linebreak=linefeed */, - { 0, 4614, 0, 15, 0, PL_VEDICEXT } /* vedicextensions */, - { 2, 6506, 2129, 3, 5, PL_YIJING } /* isyijing */, - { 1, 974, 5219, 24, 2, PL_CCC__10 } /* canonicalcombiningclass=10 */, - { 0, 7380, 2769, 4, 18, PL_CCC__216 } /* ccc=attachedaboveright */, - { 0, 5544, 7750, 13, 2, PL_NV__80 } /* numericvalue=80 */, - { 177, 3129, 1107, 17, 8, PL_KANA } /* scriptextensions=katakana */, - { 0, 184, 6944, 2, 9, PL_LATINEXTC } /* islatinextc */, - { 4, 7459, 7971, 3, 5, PL_BATK } /* sc=batak */, - { 2, 3129, 7810, 17, 6, PL_GOTH } /* scriptextensions=gothic */, - { 0, 184, 7787, 3, 5, PL_CAKM } /* ischakma */, - { 0, 2249, 0, 4, 0, PL_GLAG } /* glag */, - { 67, 7870, 0, 4, 0, PL_LEPC } /* lepc */, - { 32, 6890, 2787, 4, 18, PL_CHEROKEESUP } /* blk=cherokeesupplement */, - { 73, 2990, 6865, 4, 7, PL_ARABICPFA } /* inarabicpfa */, - { 1, 5544, 7744, 13, 2, PL_NV__70 } /* numericvalue=70 */, - { 71, 7798, 7768, 6, 2, -PL_COMPEX } /* compex=f */, - { 0, 7459, 6806, 3, 4, PL_WARA } /* sc=wara */, - { 14, 7774, 7548, 3, 7, PL_SD } /* _canondcij */, - { 3, 5192, 2003, 3, 20, PL_PRTI } /* isinscriptionalparthian */, - { 0, 8440, 0, 4, 0, PL_OGAM } /* ogam */, - { 2, 8036, 516, 5, 13, PL_UIDEO } /* isunifiedideograph */, - { 1, 1589, 0, 14, 0, PL_LATINEXTA } /* latinextendeda */, - { 0, 8204, 0, 4, 0, PL_POSIXXDIGIT } /* ahex */, - { 1, 6890, 6373, 4, 11, PL_INPAHAWHHMONG } /* blk=pahawhhmong */, - { 10, 4314, 6417, 13, 11, PL_JG__STRAIGHTWAW } /* joininggroup=straightwaw */, - { 2, 7136, 2636, 6, 9, PL_INMONGOLIAN } /* block=mongolian */, - { 155, 3129, 7443, 17, 7, PL_GRAN } /* scriptextensions=grantha */, - { 1, 7459, 8304, 3, 4, PL_SC__GUJR } /* sc=gujr */, - { 4, 5645, 6017, 10, 12, PL_BC__ON } /* bidiclass=otherneutral */, - { 40, 7689, 8209, 3, 3, PL_AHOM } /* isahom */, - { 2, 5258, 0, 13, 0, PL_BLOCKELEMENTS } /* blockelements */, - { 10, 3424, 3223, 17, 2, -PL_IDSB } /* idsbinaryoperator=n */, - { 14, 2229, 32, 16, 2, PL_CS } /* generalcategory=cs */, - { 4, 6713, 8765, 3, 3, PL_IN__8 } /* in=8.0 */, - { 3, 8504, 1621, 3, 6, PL_SB__FO } /* sb=format */, - { 1, 7380, 8651, 4, 3, PL_CCC__132 } /* ccc=132 */, - { 10, 7227, 5252, 5, 6, PL_POSIXXDIGIT } /* posixxdigit */, - { 3, 5082, 0, 11, 0, PL_MC } /* spacingmark */, - { 13, 3129, 1540, 17, 4, PL_PHAG } /* scriptextensions=phag */, - { 0, 5388, 0, 13, 0, PL_KANAEXTA } /* kanaextendeda */, - { 1, 3129, 8368, 17, 4, PL_LAO } /* scriptextensions=laoo */, - { 2, 8816, 8160, 3, 4, PL_NV__13_SLASH_2 } /* nv=13/2 */, - { 82, 6472, 5762, 10, 3, PL_LB__ZWJ } /* wordbreak=zwj */, - { 7, 4554, 34, 14, 6, PL_SB__EX } /* sentencebreak=extend */, - { 1, 3521, 7768, 5, 6, -PL_XPOSIXSPACE } /* space=false */, - { 5, 6210, 7787, 3, 5, PL_INCHAKMA } /* inchakma */, - { 1, 1452, 0, 2, 0, PL_PS } /* ps */, - { 2, 4314, 5894, 13, 3, PL_JG__NYA } /* joininggroup=nya */, - { 0, 3458, 0, 4, 0, PL_MANI } /* mani */, - { 0, 184, 1028, 3, 3, PL_COPT } /* iscopt */, - { 256, 21, 1589, 2, 9, PL_LATINEXTE } /* inlatinexte */, - { 18, 21, 8428, 2, 4, PL_INNEWA } /* innewa */, - { 81, 4630, 1930, 3, 8, PL_XPOSIXUPPER } /* isuppercase */, - { 32, 4314, 6285, 13, 11, PL_JG__MALAYALAMRA } /* joininggroup=malayalamra */, - { 35, 5134, 2371, 3, 3, PL_PRTI } /* isprti */, - { 0, 436, 7997, 5, 4, PL_NCHAR } /* nchar=yes */, - { 144, 7906, 7860, 5, 4, PL_SC__KHOJ } /* sc=khojki */, - { 0, 3129, 7492, 17, 7, PL_KNDA } /* scriptextensions=kannada */, - { 259, 5544, 7744, 13, 5, PL_NV__70000 } /* numericvalue=70000 */, - { 4, 8011, 1393, 4, 8, PL_CS } /* gc=surrogate */, - { 1, 6890, 1566, 4, 23, PL_COMPATJAMO } /* blk=hangulcompatibilityjamo */, - { 0, 1448, 2715, 5, 16, PL_SUPARROWSB } /* insupplementalarrowsb */, - { 1, 7459, 7034, 3, 9, PL_PALM } /* sc=palmyrene */, - { 2, 6554, 3611, 3, 15, PL_BOPOMOFOEXT } /* inbopomofoextended */, - { 3, 2229, 3075, 16, 18, PL_ZP } /* generalcategory=paragraphseparator */, - { 0, 7288, 8253, 8, 3, PL_SC__BUHD } /* script=buhd */, - { 2, 6483, 7997, 11, 4, PL_XIDC } /* xidcontinue=yes */, - { 0, 7136, 5609, 6, 12, PL_ALPHABETICPF } /* block=alphabeticpf */, - { 2, 7459, 3882, 3, 7, PL_SC__MYMR } /* sc=myanmar */, - { 0, 5557, 7997, 13, 4, PL_PATSYN } /* patternsyntax=yes */, - { 3, 3129, 6926, 17, 9, PL_SIND } /* scriptextensions=khudawadi */, - { 7, 1892, 7768, 5, 6, -PL_CASED } /* cased=false */, - { 0, 7457, 699, 5, 6, PL_INSC__NUMBER } /* insc=number */, - { 65, 3129, 1680, 17, 6, PL_ZYYY } /* scriptextensions=common */, - { 45, 2100, 6352, 3, 10, PL_NO } /* isothernumber */, - { 6, 4239, 7997, 4, 2, PL_DASH } /* dash=y */, - { 18, 4063, 2879, 4, 11, PL_DEVANAGARIEXT } /* indevanagariext */, - { 12, 7288, 2841, 7, 6, PL_SC__COPT } /* script=coptic */, - { 0, 2065, 3223, 21, 3, -PL_NCHAR } /* noncharactercodepoint=no */, - { 0, 4542, 5552, 3, 3, PL_TALU } /* istalu */, - { 0, 7459, 8448, 3, 4, PL_ORKH } /* sc=orkh */, - { 1, 7288, 2360, 7, 4, PL_SC__MAND } /* script=mand */, - { 114, 184, 8091, 2, 5, PL_RUNR } /* isrunic */, - { 0, 7288, 8352, 7, 4, PL_KHMR } /* script=khmr */, - { 2, 8816, 8688, 3, 2, PL_NV__26 } /* nv=26 */, - { 0, 3521, 7997, 5, 2, PL_XPOSIXSPACE } /* space=y */, - { 0, 6890, 4784, 4, 4, PL_INCHAM } /* blk=cham */, - { 73, 3129, 8456, 17, 4, PL_OSGE } /* scriptextensions=osge */, - { 0, 7288, 8268, 7, 4, PL_SC__CPRT } /* script=cprt */, - { 0, 8096, 2967, 4, 4, PL_GEOR } /* scx=geor */, - { 0, 8376, 223, 3, 2, PL_LB__PR } /* lb=pr */, - { 0, 974, 7924, 24, 6, PL_CCC__9 } /* canonicalcombiningclass=virama */, - { 1, 3129, 7846, 17, 6, PL_KTHI } /* scriptextensions=kaithi */, - { 0, 21, 7957, 3, 4, PL_INADLAM } /* inadlam */, - { 82, 5544, 5219, 13, 3, PL_NV__100 } /* numericvalue=100 */, - { 3, 3373, 1093, 15, 9, PL_EA__F } /* eastasianwidth=fullwidth */, - { 0, 7136, 4010, 6, 6, PL_INTANGUT } /* block=tangut */, - { 0, 8011, 5323, 3, 13, PL_ME } /* gc=enclosingmark */, - { 0, 7380, 8673, 7, 2, PL_CCC__14 } /* ccc=ccc14 */, - { 0, 5192, 6918, 3, 8, PL_QAAI } /* isinherited */, - { 15, 8096, 8091, 4, 5, PL_RUNR } /* scx=runic */, - { 0, 6890, 2484, 4, 19, PL_INEGYPTIANHIEROGLYPHS } /* blk=egyptianhieroglyphs */, - { 0, 6713, 8855, 3, 3, PL_IN__3_DOT_2 } /* in=v32 */, - { 1, 184, 1886, 2, 2, PL_NL } /* isnl */, - { 30, 11, 7997, 3, 4, PL_DIA } /* dia=yes */, - { 0, 8272, 3223, 4, 3, -PL_CWCF } /* cwcf=no */, - { 22, 8572, 1107, 3, 8, PL_WB__KA } /* wb=katakana */, - { 261, 5557, 7997, 13, 2, PL_PATSYN } /* patternsyntax=y */, - { 2, 4542, 1372, 4, 2, PL_TELU } /* istelu */, - { 2, 8101, 7951, 5, 5, PL_STERM } /* sterm=true */, - { 4, 4402, 2637, 3, 18, PL_MONGOLIANSUP } /* inmongoliansupplement */, - { 0, 1159, 7997, 25, 4, PL_CWKCF } /* changeswhennfkccasefolded=yes */, - { 28, 8016, 4047, 4, 2, PL_LB__H2 } /* gcb=lv */, - { 3, 2229, 45, 16, 2, PL_CO } /* generalcategory=co */, - { 29, 947, 0, 27, 0, PL_ANCIENTGREEKMUSIC } /* ancientgreekmusicalnotation */, - { 35, 6263, 6899, 10, 9, PL_LB__B2 } /* linebreak=breakboth */, - { 3, 7380, 7576, 4, 7, PL_CCC__1 } /* ccc=overlay */, - { 13, 974, 8705, 24, 3, PL_CCC__IS } /* canonicalcombiningclass=240 */, - { 0, 6263, 6186, 10, 11, PL_LB__IN } /* linebreak=inseparable */, - { 1, 510, 0, 30, 0, PL_CJKEXTA } /* cjkunifiedideographsextensiona */, - { 49, 7380, 5981, 4, 12, PL_CCC__0 } /* ccc=notreordered */, - { 0, 21, 8091, 2, 5, PL_INRUNIC } /* inrunic */, - { 0, 7136, 5693, 6, 12, PL_CYRILLICEXTB } /* block=cyrillicextb */, - { 0, 3706, 0, 16, 0, PL_HALFANDFULLFORMS } /* halfandfullforms */, - { 0, 3898, 0, 16, 0, PL_MYANMAREXTB } /* myanmarextendedb */, - { 1, 7459, 2107, 3, 4, PL_SC__SINH } /* sc=sinh */, - { 30, 117, 2004, 4, 19, PL_ININSCRIPTIONALPARTHIAN } /* ininscriptionalparthian */, - { 145, 6706, 8870, 10, 3, PL_IN__5_DOT_2 } /* presentin=v52 */, - { 28, 6890, 2541, 4, 10, PL_JAMO } /* blk=hanguljamo */, - { 3, 7288, 7583, 7, 7, PL_SC__PHAG } /* script=phagspa */, - { 3, 5544, 8744, 13, 3, PL_NV__5_SLASH_8 } /* numericvalue=5/8 */, - { 2, 3129, 7336, 17, 8, PL_UGAR } /* scriptextensions=ugaritic */, - { 28, 8816, 5219, 3, 11, PL_NV__10000000000 } /* nv=10000000000 */, - { 4, 7459, 8200, 3, 4, PL_AGHB } /* sc=aghb */, - { 2, 3129, 6005, 17, 12, PL_HUNG } /* scriptextensions=oldhungarian */, - { 0, 8076, 7997, 5, 4, PL_PATWS } /* patws=yes */, - { 51, 1746, 8789, 21, 3, PL_WB__EBG } /* graphemeclusterbreak=ebg */, - { 0, 8816, 7732, 3, 2, PL_NV__50 } /* nv=50 */, - { 24, 7459, 6736, 3, 10, PL_SAUR } /* sc=saurashtra */, - { 18, 8240, 4149, 3, 15, PL_BC__CS } /* bc=commonseparator */, - { 0, 8376, 6197, 3, 11, PL_LB__IN } /* lb=inseperable */, - { 65, 7208, 0, 4, 0, PL_HIRA } /* hira */, - { 0, 4314, 4967, 13, 14, PL_JG__MANICHAEANKAPH } /* joininggroup=manichaeankaph */, - { 0, 6472, 7165, 10, 3, PL_WB__GAZ } /* wordbreak=gaz */, - { 32, 6706, 7744, 10, 1, PL_IN__7 } /* presentin=7 */, - { 14, 6890, 5363, 5, 5, PL_IPAEXT } /* blk=ipaext */, - { 0, 1963, 7997, 7, 4, PL_RADICAL } /* radical=yes */, - { 0, 8816, 8164, 3, 2, PL_NV__15 } /* nv=15 */, - { 101, 6120, 0, 11, 0, PL_DOMINO } /* dominotiles */, - { 0, 184, 2842, 3, 17, PL_COPTICEPACTNUMBERS } /* iscopticepactnumbers */, - { 0, 7380, 8051, 4, 5, PL_CCC__7 } /* ccc=nukta */, - { 0, 6890, 5825, 4, 12, PL_MAHJONG } /* blk=mahjongtiles */, - { 1, 7457, 4743, 5, 14, PL_INSC__GEMINATIONMARK } /* insc=geminationmark */, - { 1, 5544, 8688, 13, 2, PL_NV__26 } /* numericvalue=26 */, - { 1, 7457, 4539, 5, 15, PL_INSC__REGISTERSHIFTER } /* insc=registershifter */, - { 2, 892, 0, 28, 0, PL_VSSUP } /* variationselectorssupplement */, - { 45, 6890, 920, 4, 27, PL_ALPHABETICPF } /* blk=alphabeticpresentationforms */, - { 0, 6210, 7395, 3, 6, PL_CJKEXTB } /* incjkextb */, - { 0, 8096, 6008, 4, 4, PL_HUNG } /* scx=hung */, - { 0, 7380, 6836, 4, 9, PL_CCC__AL } /* ccc=aboveleft */, - { 38, 6890, 2044, 4, 14, PL_MEETEIMAYEKEXT } /* blk=meeteimayekext */, - { 0, 5375, 6461, 12, 11, PL_JT__T } /* joiningtype=transparent */, - { 0, 8316, 0, 4, 0, PL_HANO } /* hano */, - { 0, 8096, 8412, 4, 4, PL_MTEI } /* scx=mtei */, - { 0, 7288, 7436, 7, 7, PL_ELBA } /* script=elbasan */, - { 100, 8340, 6417, 3, 11, PL_JG__STRAIGHTWAW } /* jg=straightwaw */, - { 0, 6890, 2877, 4, 10, PL_INDEVANAGARI } /* blk=devanagari */, - { 101, 96, 3223, 5, 2, -PL_XPOSIXALPHA } /* alpha=n */, - { 0, 7401, 0, 7, 0, PL_CJKEXTC } /* cjkextc */, - { 0, 7478, 6737, 3, 9, PL_SAUR } /* issaurashtra */, - { 1, 21, 8046, 2, 5, PL_INLIMBU } /* inlimbu */, - { 49, 7459, 7200, 3, 8, PL_SC__GURU } /* sc=gurmukhi */, - { 0, 974, 18, 24, 1, PL_CCC__R } /* canonicalcombiningclass=r */, - { 0, 7459, 7611, 3, 7, PL_SOYO } /* sc=soyombo */, - { 0, 184, 7256, 2, 8, PL_KANAEXTA } /* iskanaexta */, - { 1, 8096, 1981, 4, 8, PL_CYRL } /* scx=cyrillic */, - { 0, 8006, 3223, 5, 2, -PL_CWKCF } /* cwkcf=n */, - { 11, 6472, 125, 10, 2, PL_LB__CR } /* wordbreak=cr */, - { 29, 8096, 7499, 4, 7, PL_KALI } /* scx=kayahli */, - { 3, 2229, 8001, 16, 5, PL_XPOSIXCNTRL } /* generalcategory=cntrl */, - { 90, 3129, 5121, 17, 14, PL_PHLP } /* scriptextensions=psalterpahlavi */, - { 3, 8340, 8212, 3, 4, PL_JG__ALEF } /* jg=alef */, - { 0, 6890, 7320, 4, 8, PL_INTIFINAGH } /* blk=tifinagh */, - { 0, 3129, 8608, 17, 4, PL_ZZZZ } /* scriptextensions=zzzz */, - { 128, 7459, 8044, 3, 4, PL_PHLI } /* sc=phli */, - { 4, 6472, 5729, 10, 12, PL_WB__EX } /* wordbreak=extendnumlet */, - { 0, 2674, 0, 12, 0, PL_SUNDANESESUP } /* sundanesesup */, - { 5, 1497, 0, 23, 0, PL_BYZANTINEMUSIC } /* byzantinemusicalsymbols */, - { 0, 7136, 1498, 7, 22, PL_BYZANTINEMUSIC } /* block=byzantinemusicalsymbols */, - { 2, 3129, 1566, 17, 6, PL_HANG } /* scriptextensions=hangul */, - { 1, 7534, 0, 7, 0, PL_NB } /* noblock */, - { 0, 3914, 0, 5, 0, PL_C } /* other */, - { 37, 8026, 809, 3, 27, PL_PHONETICEXTSUP } /* inphoneticextensionssupplement */, - { 2, 5544, 7936, 13, 5, PL_NV__1_SLASH_160 } /* numericvalue=1/160 */, - { 0, 7459, 7786, 3, 6, PL_SC__CAKM } /* sc=chakma */, - { 256, 3424, 7997, 4, 2, PL_IDSB } /* idsb=y */, - { 265, 6483, 0, 11, 0, PL_XIDC } /* xidcontinue */, - { 0, 6890, 5336, 4, 13, PL_GREEKEXT } /* blk=greekextended */, - { 6, 1184, 3223, 25, 2, -PL_DI } /* defaultignorablecodepoint=n */, - { 0, 7459, 8608, 3, 4, PL_ZZZZ } /* sc=zzzz */, - { 10, 974, 8228, 24, 3, PL_CCC__202 } /* canonicalcombiningclass=atb */, - { 38, 8376, 6845, 3, 9, PL_LB__AI } /* lb=ambiguous */, - { 0, 184, 7, 3, 1, PL_XPOSIXCNTRL } /* iscc */, - { 280, 1589, 0, 9, 0, PL_LATINEXTE } /* latinexte */, - { 0, 7136, 4089, 6, 15, PL_ARABICEXTA } /* block=arabicextendeda */, - { 1, 2750, 3223, 19, 3, -PL_TERM } /* terminalpunctuation=no */, - { 263, 7136, 2389, 6, 19, PL_ANCIENTGREEKNUMBERS } /* block=ancientgreeknumbers */, - { 1, 1746, 73, 21, 2, PL_LB__EM } /* graphemeclusterbreak=em */, - { 1, 5645, 5079, 10, 14, PL_BC__NSM } /* bidiclass=nonspacingmark */, - { 65, 7798, 3223, 6, 3, -PL_COMPEX } /* compex=no */, - { 0, 3129, 7152, 17, 4, PL_DUPL } /* scriptextensions=dupl */, - { 0, 3129, 7120, 17, 4, PL_BALI } /* scriptextensions=bali */, - { 288, 7459, 6373, 3, 11, PL_HMNG } /* sc=pahawhhmong */, - { 6, 2229, 1679, 16, 2, PL_PC } /* generalcategory=pc */, - { 0, 3129, 7822, 17, 4, PL_HATR } /* scriptextensions=hatr */, - { 0, 974, 8632, 27, 2, PL_CCC__91 } /* canonicalcombiningclass=ccc91 */, - { 4, 5134, 2, 3, 1, PL_PI } /* ispi */, - { 29, 184, 8941, 2, 2, PL_ZS } /* iszs */, - { 15, 7288, 7858, 7, 6, PL_SC__KHOJ } /* script=khojki */, - { 0, 96, 7951, 5, 5, PL_XPOSIXALPHA } /* alpha=true */, - { 0, 8288, 5969, 3, 8, PL_DT__NONCANON } /* dt=noncanon */, - { 0, 184, 2249, 2, 10, PL_GLAG } /* isglagolitic */, - { 1, 6890, 6318, 4, 11, PL_MYANMAREXTB } /* blk=myanmarextb */, - { 64, 7459, 8312, 3, 4, PL_SC__HAN } /* sc=hani */, - { 81, 1897, 7768, 21, 6, -PL_CWT } /* changeswhentitlecased=false */, - { 0, 6890, 1702, 4, 12, PL_DIACRITICALS } /* blk=diacriticals */, - { 0, 8504, 1074, 3, 2, PL_SB__ST } /* sb=st */, - { 0, 447, 0, 32, 0, PL_IDEOGRAPHICSYMBOLS } /* ideographicsymbolsandpunctuation */, - { 0, 599, 0, 2, 0, PL_XPOSIXCNTRL } /* cc */, - { 0, 5544, 5219, 13, 9, PL_NV__100000000 } /* numericvalue=100000000 */, - { 0, 8816, 8161, 3, 3, PL_NV__3_SLASH_2 } /* nv=3/2 */, - { 0, 8376, 3, 4, 1, PL_LB__LF } /* lb=lf */, - { 23, 7288, 1680, 7, 6, PL_SC__ZYYY } /* script=common */, - { 82, 8816, 3743, 3, 1, PL_NV__1 } /* nv=1 */, - { 259, 184, 6296, 2, 11, PL_MISCSYMBOLS } /* ismiscsymbols */, - { 28, 8086, 7997, 5, 2, PL_QMARK } /* qmark=y */, - { 0, 7288, 8316, 7, 4, PL_SC__HANO } /* script=hano */, - { 0, 6472, 1107, 10, 2, PL_WB__KA } /* wordbreak=ka */, - { 1, 4479, 7998, 15, 3, PL_NFKCQC__Y } /* nfkcquickcheck=yes */, - { 0, 3674, 0, 16, 0, PL_CYPRIOTSYLLABARY } /* cypriotsyllabary */, - { 65, 3114, 7675, 3, 6, PL_UCASEXT } /* inucasext */, - { 74, 3129, 1479, 18, 2, PL_VAI } /* scriptextensions=vai */, - { 9, 5192, 5363, 3, 12, PL_IPAEXT } /* isipaextensions */, - { 0, 6613, 2561, 3, 18, PL_JAMOEXTB } /* ishanguljamoextendedb */, - { 0, 7380, 8168, 7, 2, PL_CCC__17 } /* ccc=ccc17 */, - { 0, 8196, 8660, 4, 3, PL_AGE__2_DOT_1 } /* age=2.1 */, - { 16, 184, 4210, 3, 14, PL_CONTROLPICTURES } /* iscontrolpictures */, - { 24, 8376, 2284, 3, 2, PL_LB__HL } /* lb=hl */, - { 1, 7136, 5149, 6, 14, PL_SUPPUNCTUATION } /* block=suppunctuation */, - { 1, 8340, 7079, 3, 9, PL_JG__SYRIACWAW } /* jg=syriacwaw */, - { 3, 5544, 7720, 13, 4, PL_NV__4000 } /* numericvalue=4000 */, - { 14, 8076, 3581, 5, 2, PL_PATWS } /* patws=t */, - { 0, 6109, 0, 10, 0, PL_C } /* category=c */, - { 1, 184, 3390, 2, 17, PL_ETHIOPICEXTA } /* isethiopicextendeda */, - { 1, 7459, 7351, 3, 4, PL_SC__TALE } /* sc=tale */, - { 2, 2229, 6098, 16, 11, PL_L_AMP_ } /* generalcategory=casedletter */, - { 0, 8096, 8476, 4, 4, PL_COPT } /* scx=qaac */, - { 0, 8081, 0, 5, 0, PL_XPOSIXPRINT } /* print */, - { 42, 3129, 8540, 17, 4, PL_TAML } /* scriptextensions=taml */, - { 6, 5544, 8168, 13, 2, PL_NV__17 } /* numericvalue=17 */, - { 0, 8096, 6676, 4, 10, PL_XPEO } /* scx=oldpersian */, - { 1, 1448, 7612, 3, 6, PL_INSOYOMBO } /* insoyombo */, - { 0, 8288, 8831, 3, 3, PL_DT__SML } /* dt=sml */, - { 0, 184, 5336, 2, 8, PL_GREEKEXT } /* isgreekext */, - { 18, 5134, 5122, 3, 13, PL_PHLP } /* ispsalterpahlavi */, - { 48, 974, 2295, 24, 5, PL_CCC__R } /* canonicalcombiningclass=right */, - { 20, 6221, 2807, 4, 16, PL_HALFMARKS } /* incombininghalfmarks */, - { 81, 974, 7702, 24, 3, PL_CCC__133 } /* canonicalcombiningclass=200 */, - { 1, 6263, 496, 10, 7, PL_LB__NU } /* linebreak=numeric */, - { 66, 6890, 1797, 4, 4, PL_INMODI } /* blk=modi */, - { 72, 1133, 3581, 26, 2, PL_PCM } /* prependedconcatenationmark=t */, - { 6, 8076, 3223, 5, 3, -PL_PATWS } /* patws=no */, - { 0, 7288, 3994, 7, 6, PL_SC__SYRC } /* script=syriac */, - { 17, 6890, 7240, 4, 8, PL_JAMOEXTB } /* blk=jamoextb */, - { 8, 8096, 8588, 4, 4, PL_YI } /* scx=yiii */, - { 3, 510, 0, 20, 0, PL_CJK } /* cjkunifiedideographs */, - { 0, 184, 8277, 3, 3, PL_CWCM } /* iscwcm */, - { 2, 3516, 0, 10, 0, PL_XPOSIXSPACE } /* whitespace */, - { 1, 1499, 0, 1, 0, PL_Z } /* z */, - { 0, 8816, 7702, 3, 5, PL_NV__20000 } /* nv=20000 */, - { 16, 184, 8236, 2, 4, PL_BATK } /* isbatk */, - { 1, 974, 8654, 27, 3, PL_CCC__133 } /* canonicalcombiningclass=ccc133 */, - { 0, 8816, 8663, 3, 3, PL_NV__2_SLASH_3 } /* nv=2/3 */, - { 0, 7459, 8116, 3, 5, PL_SC__TAML } /* sc=tamil */, - { 31, 5801, 0, 12, 0, PL_KHMERSYMBOLS } /* khmersymbols */, - { 0, 8036, 3, 5, 39, PL_UCASEXT } /* isunifiedcanadianaboriginalsyllabicsextended */, - { 0, 1402, 2289, 24, 4, PL_INPC__LEFT } /* indicpositionalcategory=left */, - { 1, 184, 4757, 2, 14, PL_GREXT } /* isgraphemeextend */, - { 0, 8096, 2044, 4, 11, PL_MTEI } /* scx=meeteimayek */, - { 1, 6890, 2895, 4, 11, PL_ETHIOPICSUP } /* blk=ethiopicsup */, - { 44, 8096, 8608, 4, 4, PL_ZZZZ } /* scx=zzzz */, - { 0, 6472, 4561, 10, 2, PL_WB__EB } /* wordbreak=eb */, - { 0, 1354, 7997, 24, 2, PL_COMPEX } /* fullcompositionexclusion=y */, - { 0, 6210, 5682, 3, 11, PL_CYRILLICEXTA } /* incyrillicexta */, - { 0, 4479, 47, 15, 1, PL_NFCQC__M } /* nfkcquickcheck=m */, - { 1, 1107, 0, 8, 0, PL_KANA } /* katakana */, - { 0, 7780, 0, 4, 0, PL_CARI } /* cari */, - { 1, 3373, 1, 15, 1, PL_EA__N } /* eastasianwidth=n */, - { 0, 4314, 4925, 13, 14, PL_JG__MANICHAEANBETH } /* joininggroup=manichaeanbeth */, - { 2, 5544, 8627, 13, 3, PL_NV__1_SLASH_8 } /* numericvalue=1/8 */, - { 16, 7136, 7597, 6, 7, PL_SHAW } /* block=shavian */, - { 4, 6890, 4134, 4, 7, PL_BRAI } /* blk=braille */, - { 0, 7136, 3674, 6, 16, PL_CYPRIOTSYLLABARY } /* block=cypriotsyllabary */, - { 0, 8096, 7043, 4, 9, PL_PAUC } /* scx=paucinhau */, - { 3, 1402, 6121, 3, 10, PL_DOMINO } /* indominotiles */, - { 8, 7227, 8001, 5, 5, PL_POSIXCNTRL } /* posixcntrl */, - { 13, 7459, 7443, 3, 7, PL_SC__GRAN } /* sc=grantha */, - { 0, 184, 7870, 2, 4, PL_LEPC } /* islepc */, - { 0, 7136, 1258, 6, 24, PL_ARABICPFB } /* block=arabicpresentationformsb */, - { 19, 6472, 3914, 10, 5, PL_WB__XX } /* wordbreak=other */, - { 94, 1855, 0, 21, 0, PL_CWCM } /* changeswhencasemapped */, - { 0, 1887, 7997, 5, 4, PL_XPOSIXLOWER } /* lower=yes */, - { 1, 6766, 0, 10, 0, PL_SUPARROWSA } /* suparrowsa */, - { 257, 7828, 7997, 6, 2, PL_HYPHEN } /* hyphen=y */, - { 3, 184, 2895, 2, 18, PL_ETHIOPICSUP } /* isethiopicsupplement */, - { 74, 7136, 4254, 6, 15, PL_DIACRITICALSEXT } /* block=diacriticalsext */, - { 32, 6616, 7951, 10, 5, PL_DEP } /* deprecated=true */, - { 1, 7459, 8560, 3, 4, PL_TIBT } /* sc=tibt */, - { 0, 5645, 806, 10, 2, PL_BC__WS } /* bidiclass=ws */, - { 6, 8388, 0, 4, 0, PL_LISU } /* lisu */, - { 177, 184, 5682, 3, 11, PL_CYRILLICEXTA } /* iscyrillicexta */, - { 1, 7136, 8532, 6, 4, PL_TAGS } /* block=tags */, - { 150, 1887, 7951, 5, 5, PL_XPOSIXLOWER } /* lower=true */, - { 0, 8076, 7768, 5, 2, -PL_PATWS } /* patws=f */, - { 258, 1417, 133, 9, 4, PL_M } /* category=mark */, - { 81, 8288, 2100, 3, 3, PL_DT__ISO } /* dt=iso */, - { 0, 8096, 7858, 4, 4, PL_KHOJ } /* scx=khoj */, - { 1, 4464, 8256, 4, 3, PL_DT__CAN } /* nfdqc=n */, - { 2, 8096, 7336, 4, 8, PL_UGAR } /* scx=ugaritic */, - { 0, 6472, 6153, 10, 11, PL_WB__DQ } /* wordbreak=doublequote */, - { 0, 3129, 78, 17, 4, PL_ARAB } /* scriptextensions=arab */, - { 0, 1184, 7997, 25, 4, PL_DI } /* defaultignorablecodepoint=yes */, - { 3, 7136, 7232, 6, 8, PL_JAMOEXTA } /* block=jamoexta */, - { 0, 6554, 5400, 3, 7, PL_INBALINESE } /* inbalinese */, - { 0, 2787, 0, 18, 0, PL_CHEROKEESUP } /* cherokeesupplement */, - { 0, 3129, 8352, 17, 4, PL_KHMR } /* scriptextensions=khmr */, - { 0, 7478, 1393, 3, 8, PL_CS } /* issurrogate */, - { 0, 7478, 8525, 3, 3, PL_SHRD } /* isshrd */, - { 0, 974, 8740, 27, 2, PL_CCC__25 } /* canonicalcombiningclass=ccc25 */, - { 0, 7288, 7492, 7, 7, PL_SC__KNDA } /* script=kannada */, - { 275, 184, 1797, 2, 15, PL_MODIFIERLETTERS } /* ismodifierletters */, - { 11, 8819, 0, 3, 0, PL_OCR } /* ocr */, - { 1, 7248, 0, 4, 0, PL_JAVA } /* java */, - { 1, 8568, 0, 4, 0, PL_VAI } /* vaii */, - { 4, 6890, 42, 4, 9, PL_CJKCOMPAT } /* blk=cjkcompat */, - { 5, 7459, 954, 3, 5, PL_SC__GREK } /* sc=greek */, - { 0, 2108, 1568, 4, 21, PL_COMPATJAMO } /* inhangulcompatibilityjamo */, - { 0, 7459, 6439, 3, 11, PL_SC__SYLO } /* sc=sylotinagri */, - { 0, 6210, 631, 3, 29, PL_CJKEXTE } /* incjkunifiedideographsextensione */, - { 2, 6890, 6241, 4, 11, PL_KATAKANAEXT } /* blk=katakanaext */, - { 3, 7689, 921, 3, 26, PL_ALPHABETICPF } /* isalphabeticpresentationforms */, - { 2, 4314, 4963, 13, 4, PL_JG__HETH } /* joininggroup=heth */, - { 5, 5544, 7738, 13, 6, PL_NV__600000 } /* numericvalue=600000 */, - { 1, 8572, 1083, 3, 2, PL_LB__LF } /* wb=lf */, - { 2, 7459, 7208, 3, 4, PL_SC__HIRA } /* sc=hira */, - { 34, 7459, 8480, 3, 4, PL_SC__QAAI } /* sc=qaai */, - { 3, 6890, 849, 4, 14, PL_PUA } /* blk=privateusearea */, - { 65, 7136, 78, 6, 10, PL_ARABICMATH } /* block=arabicmath */, - { 1, 8340, 5505, 3, 13, PL_JG__MANICHAEANTEN } /* jg=manichaeanten */, - { 16, 1503, 1002, 3, 26, PL_ENCLOSEDCJK } /* inenclosedcjklettersandmonths */, - { 13, 974, 8691, 24, 2, PL_CCC__28 } /* canonicalcombiningclass=28 */, - { 0, 1184, 7768, 25, 6, -PL_DI } /* defaultignorablecodepoint=false */, - { 6, 8504, 1083, 3, 2, PL_LB__LF } /* sb=lf */, - { 3, 8777, 3581, 3, 2, PL_CWL } /* cwl=t */, - { 1, 2134, 0, 3, 0, PL_XPOSIXXDIGIT } /* hex */, - { 8, 3129, 8412, 17, 4, PL_MTEI } /* scriptextensions=mtei */, - { 6, 8196, 8873, 4, 3, PL_AGE__6 } /* age=v60 */, - { 0, 184, 43, 3, 2, PL_CJK } /* iscjk */, - { 0, 8096, 8116, 4, 5, PL_TAML } /* scx=tamil */, - { 0, 3946, 7951, 16, 5, PL_STERM } /* sentenceterminal=true */, - { 0, 7136, 7653, 6, 7, PL_INTIBETAN } /* block=tibetan */, - { 0, 2841, 0, 4, 0, PL_COPT } /* copt */, - { 8, 4284, 4584, 14, 15, PL_LB__H2 } /* hangulsyllabletype=lvsyllable */, - { 0, 1402, 2349, 24, 3, PL_INPC__TOP } /* indicpositionalcategory=top */, - { 1, 2859, 5488, 18, 4, PL_DT__NONE } /* decompositiontype=none */, - { 0, 184, 47, 2, 1, PL_M } /* ism */, - { 0, 6890, 2949, 4, 18, PL_INPUNCTUATION } /* blk=generalpunctuation */, - { 0, 6890, 954, 4, 5, PL_INGREEK } /* blk=greek */, - { 0, 974, 2777, 24, 10, PL_CCC__AR } /* canonicalcombiningclass=aboveright */, - { 17, 7288, 6439, 7, 4, PL_SC__SYLO } /* script=sylo */, - { 0, 4542, 1813, 3, 21, PL_TRANSPORTANDMAP } /* istransportandmapsymbols */, - { 36, 7380, 8643, 4, 2, PL_CCC__22 } /* ccc=22 */, - { 65, 8016, 8935, 4, 2, PL_GCB__XX } /* gcb=xx */, - { 323, 6890, 2787, 4, 8, PL_INCHEROKEE } /* blk=cherokee */, - { 0, 5544, 7756, 13, 5, PL_NV__90000 } /* numericvalue=90000 */, - { 24, 6706, 8708, 10, 3, PL_IN__3 } /* presentin=3.0 */, - { 0, 5134, 7503, 3, 3, PL_PHLI } /* isphli */, - { 0, 3271, 0, 17, 0, PL_UCAS } /* canadiansyllabics */, - { 128, 4554, 1074, 14, 2, PL_SB__ST } /* sentencebreak=st */, - { 1, 8240, 8792, 3, 3, PL_BC__FSI } /* bc=fsi */, - { 206, 4198, 1545, 4, 13, PL_GEOMETRICSHAPES } /* ingeometricshapes */, - { 0, 5645, 8792, 10, 3, PL_BC__FSI } /* bidiclass=fsi */, - { 384, 7288, 7870, 7, 6, PL_LEPC } /* script=lepcha */, - { 35, 1448, 2743, 5, 7, PL_SUPARROWSC } /* insuparrowsc */, - { 0, 8096, 8452, 4, 4, PL_ORYA } /* scx=orya */, - { 0, 1426, 2209, 22, 20, PL_INSC__CONSONANTWITHSTACKER } /* indicsyllabiccategory=consonantwithstacker */, - { 0, 8096, 2107, 4, 7, PL_SINH } /* scx=sinhala */, - { 109, 7136, 42, 6, 9, PL_CJKCOMPAT } /* block=cjkcompat */, - { 2, 6890, 6406, 4, 11, PL_INSORASOMPENG } /* blk=sorasompeng */, - { 1, 8816, 5219, 3, 9, PL_NV__100000000 } /* nv=100000000 */, - { 0, 720, 0, 16, 0, PL_ENCLOSEDALPHANUM } /* enclosedalphanum */, - { 1, 11, 0, 2, 0, PL_DI } /* di */, - { 1, 58, 7997, 4, 4, PL_IDEO } /* ideo=yes */, - { 16, 7459, 690, 3, 9, PL_XSUX } /* sc=cuneiform */, - { 1, 1701, 7997, 2, 4, PL_SD } /* sd=yes */, - { 0, 7288, 8260, 7, 4, PL_SC__CAKM } /* script=cakm */, - { 7, 184, 3754, 2, 7, PL_LINB } /* islinearb */, - { 0, 184, 2895, 2, 4, PL_ETHI } /* isethi */, - { 0, 2859, 8576, 18, 4, PL_EA__F } /* decompositiontype=wide */, - { 1, 6890, 5232, 4, 13, PL_AEGEANNUMBERS } /* blk=aegeannumbers */, - { 0, 7380, 3743, 4, 1, PL_CCC__1 } /* ccc=1 */, - { 0, 1417, 966, 9, 2, PL_NO } /* category=no */, - { 4, 7136, 6953, 6, 9, PL_LATINEXTD } /* block=latinextd */, - { 243, 1184, 3223, 25, 3, -PL_DI } /* defaultignorablecodepoint=no */, - { 0, 7478, 0, 3, 0, PL_S } /* iss */, - { 0, 184, 2636, 2, 19, PL_MONGOLIANSUP } /* ismongoliansupplement */, - { 0, 7527, 0, 7, 0, PL_MULT } /* multani */, - { 4, 21, 7876, 2, 6, PL_INLYCIAN } /* inlycian */, - { 3, 8096, 8111, 4, 4, PL_TAKR } /* scx=takr */, - { 0, 7344, 7951, 8, 5, PL_XIDS } /* xidstart=true */, - { 4, 7288, 7129, 8, 7, PL_BASS } /* script=bassavah */, - { 0, 2859, 68, 18, 3, PL_DT__SUP } /* decompositiontype=sup */, - { 74, 7696, 7997, 6, 4, PL_XPOSIXSPACE } /* wspace=yes */, - { 1, 8376, 6899, 3, 9, PL_LB__B2 } /* lb=breakboth */, - { 2, 2787, 0, 8, 0, PL_CHER } /* cherokee */, - { 85, 1746, 7160, 21, 8, PL_WB__EBG } /* graphemeclusterbreak=ebasegaz */, - { 1, 8096, 7145, 5, 7, PL_BUGI } /* scx=buginese */, - { 160, 7136, 5825, 6, 12, PL_MAHJONG } /* block=mahjongtiles */, - { 0, 18, 3581, 2, 2, PL_RI } /* ri=t */, - { 0, 1448, 2696, 5, 16, PL_SUPARROWSA } /* insupplementalarrowsa */, - { 0, 7136, 3738, 6, 9, PL_LATIN1 } /* block=latin1sup */, - { 105, 8816, 7738, 3, 5, PL_NV__60000 } /* nv=60000 */, - { 31, 8096, 7912, 4, 6, PL_TELU } /* scx=telugu */, - { 49, 3129, 2484, 17, 4, PL_EGYP } /* scriptextensions=egyp */, - { 100, 7478, 1794, 6, 18, PL_MODIFIERLETTERS } /* isspacingmodifierletters */, - { 18, 349, 0, 33, 0, PL_SUPMATHOPERATORS } /* supplementalmathematicaloperators */, - { 42, 8786, 4127, 3, 7, PL_EA__N } /* ea=neutral */, - { 71, 4063, 2879, 4, 16, PL_DEVANAGARIEXT } /* indevanagariextended */, - { 0, 8046, 0, 4, 0, PL_LIMB } /* limb */, - { 0, 7288, 7876, 7, 6, PL_LYCI } /* script=lycian */, - { 0, 4923, 3967, 4, 11, PL_MATHOPERATORS } /* inmathoperators */, - { 0, 8816, 7727, 3, 2, PL_NV__32 } /* nv=32 */, - { 0, 7618, 0, 7, 0, PL_SUPPUAA } /* suppuaa */, - { 3, 21, 1585, 2, 4, PL_JAMO } /* injamo */, - { 12, 8096, 8472, 4, 4, PL_PRTI } /* scx=prti */, - { 0, 7136, 1001, 6, 11, PL_ENCLOSEDCJK } /* block=enclosedcjk */, - { 1, 5375, 0, 12, 1, PL_JT__U } /* joiningtype=u */, - { 1, 5134, 7584, 3, 6, PL_PHAG } /* isphagspa */, - { 106, 2895, 0, 18, 0, PL_ETHIOPICSUP } /* ethiopicsupplement */, - { 0, 3441, 0, 17, 0, PL_LETTERLIKESYMBOLS } /* letterlikesymbols */, - { 0, 7380, 8645, 4, 3, PL_CCC__129 } /* ccc=129 */, - { 0, 7696, 7951, 6, 5, PL_XPOSIXSPACE } /* wspace=true */, - { 0, 8376, 3526, 3, 17, PL_RI } /* lb=regionalindicator */, - { 128, 3129, 8252, 17, 4, PL_BUHD } /* scriptextensions=buhd */, - { 2, 7136, 7296, 6, 8, PL_SPECIALS } /* block=specials */, - { 0, 8376, 5763, 3, 2, PL_LB__WJ } /* lb=wj */, - { 2, 7459, 6696, 3, 10, PL_PHNX } /* sc=phoenician */, - { 0, 6713, 8708, 3, 3, PL_IN__3 } /* in=3.0 */, - { 0, 4827, 0, 14, 0, PL_KANGXI } /* kangxiradicals */, - { 49, 8816, 8744, 3, 3, PL_NV__5_SLASH_8 } /* nv=5/8 */, - { 0, 7136, 6786, 6, 10, PL_SUPARROWSC } /* block=suparrowsc */, - { 129, 2859, 1224, 18, 3, PL_DT__SUB } /* decompositiontype=sub */, - { 0, 8096, 2249, 4, 4, PL_GLAG } /* scx=glag */, - { 0, 1746, 7165, 21, 3, PL_WB__GAZ } /* graphemeclusterbreak=gaz */, - { 0, 2023, 3223, 21, 3, -PL_LOE } /* logicalorderexception=no */, - { 102, 3129, 7569, 17, 7, PL_OSMA } /* scriptextensions=osmanya */, - { 12, 1012, 0, 6, 0, PL_L } /* letter */, - { 0, 7478, 47, 3, 1, PL_SM } /* issm */, - { 15, 6890, 802, 4, 6, PL_ARROWS } /* blk=arrows */, - { 219, 2895, 0, 11, 0, PL_ETHIOPICSUP } /* ethiopicsup */, - { 0, 8096, 7786, 4, 6, PL_CAKM } /* scx=chakma */, - { 3, 6890, 2465, 4, 11, PL_COUNTINGROD } /* blk=countingrod */, - { 1, 8036, 3, 5, 31, PL_UCAS } /* isunifiedcanadianaboriginalsyllabics */, - { 0, 7689, 7360, 3, 6, PL_AVST } /* isavestan */, - { 1, 974, 7941, 24, 2, PL_CCC__11 } /* canonicalcombiningclass=11 */, - { 0, 8572, 7160, 3, 8, PL_WB__EBG } /* wb=ebasegaz */, - { 1, 7136, 6989, 6, 9, PL_INNEWTAILUE } /* block=newtailue */, - { 33, 8504, 24, 4, 1, PL_SB__CL } /* sb=cl */, - { 1, 6890, 7527, 4, 7, PL_INMULTANI } /* blk=multani */, - { 1, 6263, 6175, 10, 11, PL_LB__EX } /* linebreak=exclamation */, - { 0, 8096, 494, 4, 3, PL_HAN } /* scx=han */, - { 0, 6713, 8738, 3, 3, PL_IN__5_DOT_2 } /* in=5.2 */, - { 217, 6616, 7768, 10, 2, -PL_DEP } /* deprecated=f */, - { 1, 6890, 8061, 4, 5, PL_INOGHAM } /* blk=ogham */, - { 44, 184, 511, 3, 29, PL_CJKEXTA } /* iscjkunifiedideographsextensiona */, - { 7, 7380, 8684, 4, 3, PL_CCC__L } /* ccc=224 */, - { 257, 7436, 0, 4, 0, PL_ELBA } /* elba */, - { 28, 7459, 8568, 3, 3, PL_VAI } /* sc=vai */, - { 0, 5645, 5413, 10, 3, PL_BC__RLO } /* bidiclass=rlo */, - { 0, 7288, 8428, 7, 4, PL_NEWA } /* script=newa */, - { 0, 2221, 3145, 3, 2, PL_GCB__V } /* hst=v */, - { 432, 6890, 1812, 4, 15, PL_TRANSPORTANDMAP } /* blk=transportandmap */, - { 0, 7288, 8208, 7, 4, PL_AHOM } /* script=ahom */, - { 0, 3129, 8066, 17, 5, PL_ORYA } /* scriptextensions=oriya */, - { 0, 184, 6935, 2, 9, PL_LATINEXTB } /* islatinextb */, - { 2, 6890, 1585, 4, 4, PL_JAMO } /* blk=jamo */, - { 0, 8096, 4644, 4, 15, PL_ZANB } /* scx=zanabazarsquare */, - { 1, 5192, 7346, 3, 6, PL_IDS } /* isidstart */, - { 1, 3373, 9, 15, 2, PL_EA__NA } /* eastasianwidth=na */, - { 6, 7380, 8654, 4, 3, PL_CCC__133 } /* ccc=133 */, - { 0, 7459, 1797, 3, 4, PL_SC__MODI } /* sc=modi */, - { 133, 3129, 7681, 17, 7, PL_ZZZZ } /* scriptextensions=unknown */, - { 9, 184, 4134, 2, 4, PL_BRAI } /* isbrai */, - { 264, 6890, 1282, 4, 10, PL_CJKSYMBOLS } /* blk=cjksymbols */, - { 33, 1426, 4058, 22, 5, PL_INSC__VOWEL } /* indicsyllabiccategory=vowel */, - { 21, 184, 5253, 2, 5, PL_XPOSIXDIGIT } /* isdigit */, - { 18, 184, 6646, 2, 10, PL_MISCARROWS } /* ismiscarrows */, - { 58, 7136, 5260, 8, 11, PL_BLOCKELEMENTS } /* block=blockelements */, - { 8, 2750, 3581, 4, 2, PL_TERM } /* term=t */, - { 7, 7136, 7520, 6, 7, PL_INMARCHEN } /* block=marchen */, - { 1, 7136, 1702, 6, 22, PL_DIACRITICALSFORSYMBOLS } /* block=diacriticalsforsymbols */, - { 0, 6890, 7520, 4, 7, PL_INMARCHEN } /* blk=marchen */, - { 0, 6616, 3581, 10, 2, PL_DEP } /* deprecated=t */, - { 0, 7828, 0, 6, 0, PL_HYPHEN } /* hyphen */, - { 0, 8822, 7997, 3, 2, PL_PCM } /* pcm=y */, - { 1, 6554, 7129, 3, 7, PL_INBASSAVAH } /* inbassavah */, - { 33, 3129, 6917, 17, 9, PL_QAAI } /* scriptextensions=inherited */, - { 0, 8504, 723, 4, 4, PL_SB__CL } /* sb=close */, - { 258, 1417, 698, 9, 2, PL_MN } /* category=mn */, - { 4, 6109, 8002, 10, 4, PL_XPOSIXCNTRL } /* category=cntrl */, - { 1, 6890, 892, 4, 28, PL_VSSUP } /* blk=variationselectorssupplement */, - { 1, 7457, 2823, 5, 18, PL_INSC__CONSONANTSUBJOINED } /* insc=consonantsubjoined */, - { 0, 8816, 8180, 3, 4, PL_NV__3_SLASH_80 } /* nv=3/80 */, - { 50, 6626, 0, 4, 0, PL_KHAR } /* khar */, - { 0, 3129, 7506, 17, 7, PL_LINA } /* scriptextensions=lineara */, - { 0, 2985, 3581, 3, 2, PL_IDS } /* ids=t */, - { 0, 7380, 8693, 4, 3, PL_CCC__A } /* ccc=230 */, - { 7, 8816, 7702, 3, 4, PL_NV__2000 } /* nv=2000 */, - { 2, 6472, 0, 4, 0, PL_XPOSIXWORD } /* word */, - { 0, 184, 8364, 2, 4, PL_LANA } /* islana */, - { 0, 7288, 7681, 7, 7, PL_ZZZZ } /* script=unknown */, - { 1, 7459, 8440, 3, 4, PL_OGAM } /* sc=ogam */, - { 11, 5645, 3223, 5, 2, -PL_BIDIC } /* bidic=n */, - { 1, 7471, 62, 7, 5, PL_POSIXGRAPH } /* isposixgraph */, - { 0, 6483, 7997, 4, 2, PL_XIDC } /* xidc=y */, - { 7, 184, 750, 2, 29, PL_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsupplement */, - { 0, 2990, 29, 4, 4, PL_INARABIC } /* inarabic */, - { 56, 1448, 867, 5, 25, PL_SUPPUAB } /* insupplementaryprivateuseareab */, - { 10, 184, 1283, 3, 23, PL_CJKSYMBOLS } /* iscjksymbolsandpunctuation */, - { 2, 7288, 7527, 7, 7, PL_SC__MULT } /* script=multani */, - { 2, 6472, 138, 10, 2, PL_WB__FO } /* wordbreak=fo */, - { 7, 7288, 6926, 7, 9, PL_SC__SIND } /* script=khudawadi */, - { 128, 6263, 42, 10, 2, PL_LB__CJ } /* linebreak=cj */, - { 37, 11, 7997, 3, 2, PL_DIA } /* dia=y */, - { 2, 4314, 4953, 13, 14, PL_JG__MANICHAEANHETH } /* joininggroup=manichaeanheth */, - { 2, 8096, 7208, 4, 4, PL_HIRA } /* scx=hira */, - { 6, 3129, 7120, 17, 8, PL_BALI } /* scriptextensions=balinese */, - { 1, 7227, 468, 5, 5, PL_POSIXPUNCT } /* posixpunct */, - { 3, 184, 2877, 2, 4, PL_DEVA } /* isdeva */, - { 27, 7136, 1939, 6, 21, PL_CJKCOMPATFORMS } /* block=cjkcompatibilityforms */, - { 0, 8332, 7592, 4, 5, PL_INSHARADA } /* insharada */, - { 2, 6626, 0, 10, 0, PL_KHAR } /* kharoshthi */, - { 0, 8096, 6736, 4, 4, PL_SAUR } /* scx=saur */, - { 1, 7288, 8404, 7, 4, PL_SC__MLYM } /* script=mlym */, - { 0, 1897, 3581, 21, 2, PL_CWT } /* changeswhentitlecased=t */, - { 1, 5645, 3223, 5, 3, -PL_BIDIC } /* bidic=no */, - { 1, 8376, 23, 3, 2, PL_LB__AL } /* lb=al */, - { 0, 1918, 3223, 21, 2, -PL_CWU } /* changeswhenuppercased=n */, - { 1, 3129, 7366, 17, 4, PL_BENG } /* scriptextensions=beng */, - { 12, 2229, 3854, 16, 10, PL_SM } /* generalcategory=mathsymbol */, - { 0, 21, 3754, 2, 16, PL_LINEARBIDEOGRAMS } /* inlinearbideograms */, - { 8, 6221, 2843, 4, 16, PL_COPTICEPACTNUMBERS } /* incopticepactnumbers */, - { 38, 8026, 2355, 5, 14, PL_INPC__BOTTOMANDRIGHT } /* inpc=bottomandright */, - { 1, 7971, 0, 5, 0, PL_BATK } /* batak */, - { 89, 8816, 8740, 3, 2, PL_NV__25 } /* nv=25 */, - { 0, 7288, 2269, 7, 20, PL_PHLI } /* script=inscriptionalpahlavi */, - { 0, 6210, 1961, 3, 13, PL_CJKRADICALSSUP } /* incjkradicalssup */, - { 0, 7288, 8066, 7, 5, PL_SC__ORYA } /* script=oriya */, - { 72, 7136, 7822, 6, 6, PL_INHATRAN } /* block=hatran */, - { 2, 7288, 7248, 7, 8, PL_SC__JAVA } /* script=javanese */, - { 98, 7380, 8164, 7, 2, PL_CCC__15 } /* ccc=ccc15 */, - { 2, 6890, 3882, 4, 7, PL_INMYANMAR } /* blk=myanmar */, - { 27, 1426, 7924, 22, 6, PL_INSC__VIRAMA } /* indicsyllabiccategory=virama */, - { 6, 184, 62, 2, 5, PL_XPOSIXGRAPH } /* isgraph */, - { 0, 1960, 0, 14, 0, PL_CJKRADICALSSUP } /* cjkradicalssup */, - { 322, 4813, 0, 14, 0, PL_KANASUP } /* kanasupplement */, - { 4, 6263, 8935, 10, 2, PL_LB__XX } /* linebreak=xx */, - { 0, 6890, 7499, 4, 7, PL_KALI } /* blk=kayahli */, - { 1, 5051, 7996, 5, 3, PL_DT__NONE } /* nfkdqc=y */, - { 0, 974, 8654, 24, 3, PL_CCC__133 } /* canonicalcombiningclass=133 */, - { 594, 7478, 6737, 3, 3, PL_SAUR } /* issaur */, - { 0, 6713, 8723, 3, 3, PL_IN__4 } /* in=4.0 */, - { 1, 7380, 8642, 7, 3, PL_CCC__122 } /* ccc=ccc122 */, - { 2, 6826, 0, 10, 0, PL_YIRADICALS } /* yiradicals */, - { 4, 7459, 8568, 3, 4, PL_VAI } /* sc=vaii */, - { 0, 8106, 0, 5, 0, PL_TALE } /* taile */, - { 2, 7136, 7646, 6, 7, PL_INTAIVIET } /* block=taiviet */, - { 109, 1417, 1027, 9, 2, PL_SO } /* category=so */, - { 5, 2229, 7, 17, 1, PL_L_AMP_ } /* generalcategory=lc */, - { 1, 7136, 7555, 6, 7, PL_OLCK } /* block=olchiki */, - { 6, 4314, 5518, 13, 13, PL_JG__MANICHAEANWAW } /* joininggroup=manichaeanwaw */, - { 0, 3129, 5825, 17, 4, PL_MAHJ } /* scriptextensions=mahj */, - { 521, 4590, 7951, 2, 5, PL_VS } /* vs=true */, - { 3, 699, 0, 6, 0, PL_N } /* number */, - { 0, 8016, 852, 4, 1, PL_GCB__V } /* gcb=v */, - { 0, 3521, 3223, 5, 2, -PL_XPOSIXSPACE } /* space=n */, - { 3, 2985, 3223, 18, 2, -PL_IDST } /* idstrinaryoperator=n */, - { 1, 8786, 6845, 3, 9, PL_EA__A } /* ea=ambiguous */, - { 0, 3129, 1160, 17, 4, PL_HANG } /* scriptextensions=hang */, - { 77, 7459, 6919, 5, 7, PL_SC__QAAI } /* sc=inherited */, - { 0, 1897, 7768, 21, 2, -PL_CWT } /* changeswhentitlecased=f */, - { 124, 6613, 2542, 3, 9, PL_JAMO } /* ishanguljamo */, - { 2, 8798, 7997, 3, 4, PL_LOE } /* loe=yes */, - { 0, 974, 8636, 27, 3, PL_CCC__107 } /* canonicalcombiningclass=ccc107 */, - { 258, 3129, 8472, 17, 4, PL_PRTI } /* scriptextensions=prti */, - { 226, 8016, 295, 4, 2, PL_GCB__SM } /* gcb=sm */, - { 66, 4239, 7768, 4, 6, -PL_DASH } /* dash=false */, - { 1, 8816, 8624, 3, 3, PL_NV__1_SLASH_7 } /* nv=1/7 */, - { 128, 4314, 2427, 13, 19, PL_JG__BURUSHASKIYEHBARREE } /* joininggroup=burushaskiyehbarree */, - { 85, 1855, 7951, 21, 5, PL_CWCM } /* changeswhencasemapped=true */, - { 3, 1887, 3581, 9, 2, PL_XPOSIXLOWER } /* lowercase=t */, - { 30, 6706, 7710, 10, 1, PL_IN__6 } /* presentin=6 */, - { 0, 5645, 2329, 10, 20, PL_BC__RLE } /* bidiclass=righttoleftembedding */, - { 0, 5544, 8740, 13, 2, PL_NV__25 } /* numericvalue=25 */, - { 0, 8021, 7997, 5, 4, PL_GREXT } /* grext=yes */, - { 0, 8196, 8888, 4, 3, PL_AGE__8 } /* age=v80 */, - { 2, 8096, 7007, 4, 9, PL_ITAL } /* scx=olditalic */, - { 0, 8096, 8380, 4, 4, PL_LINA } /* scx=lina */, - { 20, 1184, 7997, 25, 2, PL_DI } /* defaultignorablecodepoint=y */, - { 2, 2990, 1260, 4, 22, PL_ARABICPFB } /* inarabicpresentationformsb */, - { 1, 7457, 2408, 5, 19, PL_INSC__BRAHMIJOININGNUMBER } /* insc=brahmijoiningnumber */, - { 256, 184, 2806, 3, 17, PL_HALFMARKS } /* iscombininghalfmarks */, - { 259, 6263, 3985, 10, 9, PL_LB__EM } /* linebreak=emodifier */, - { 408, 184, 3067, 2, 8, PL_DINGBATS } /* isdingbats */, - { 18, 7136, 5705, 6, 12, PL_CYRILLICEXTC } /* block=cyrillicextc */, - { 152, 6756, 0, 10, 0, PL_SD } /* softdotted */, - { 0, 2229, 74, 16, 2, PL_ME } /* generalcategory=me */, - { 16, 7288, 7016, 7, 9, PL_SC__PERM } /* script=oldpermic */, - { 384, 4554, 3914, 14, 5, PL_SB__XX } /* sentencebreak=other */, - { 2, 2859, 3003, 18, 4, PL_DT__INIT } /* decompositiontype=init */, - { 0, 6210, 7402, 3, 6, PL_CJKEXTC } /* incjkextc */, - { 283, 5583, 3223, 13, 2, -PL_QMARK } /* quotationmark=n */, - { 1, 974, 7714, 24, 2, PL_CCC__30 } /* canonicalcombiningclass=30 */, - { 152, 7459, 8308, 3, 4, PL_SC__GURU } /* sc=guru */, - { 58, 38, 0, 2, 0, PL_XPOSIXDIGIT } /* nd */, - { 92, 2229, 468, 16, 11, PL_P } /* generalcategory=punctuation */, - { 15, 7288, 7611, 7, 7, PL_SOYO } /* script=soyombo */, - { 78, 4590, 3223, 2, 2, -PL_VS } /* vs=n */, - { 0, 8096, 8232, 4, 4, PL_AVST } /* scx=avst */, - { 150, 3129, 6406, 17, 4, PL_SORA } /* scriptextensions=sora */, - { 30, 184, 4688, 3, 13, PL_CJKCOMPATFORMS } /* iscjkcompatforms */, - { 0, 8816, 8630, 3, 3, PL_NV__1_SLASH_9 } /* nv=1/9 */, - { 1, 6890, 750, 4, 29, PL_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsupplement */, - { 2, 2229, 6362, 16, 11, PL_SO } /* generalcategory=othersymbol */, - { 32, 8364, 0, 4, 0, PL_LANA } /* lana */, - { 0, 2221, 3581, 3, 13, PL_GCB__T } /* hst=trailingjamo */, - { 49, 6472, 24, 11, 1, PL_WB__NL } /* wordbreak=nl */, - { 40, 513, 3581, 16, 2, PL_UIDEO } /* unifiedideograph=t */, - { 0, 6890, 3770, 4, 16, PL_LINEARBSYLLABARY } /* blk=linearbsyllabary */, - { 2, 2990, 3596, 4, 7, PL_ARABICSUP } /* inarabicsup */, - { 8, 3946, 3223, 16, 2, -PL_STERM } /* sentenceterminal=n */, - { 2, 21, 5801, 2, 5, PL_INKHMER } /* inkhmer */, - { 1, 2859, 2100, 18, 3, PL_DT__ISO } /* decompositiontype=iso */, - { 0, 18, 7997, 2, 4, PL_RI } /* ri=yes */, - { 2, 8376, 929, 3, 2, PL_LB__CP } /* lb=cp */, - { 0, 7459, 8324, 3, 4, PL_HMNG } /* sc=hmng */, - { 1, 6263, 5583, 10, 9, PL_LB__QU } /* linebreak=quotation */, - { 21, 7288, 7876, 7, 4, PL_LYCI } /* script=lyci */, - { 0, 4314, 7079, 13, 9, PL_JG__SYRIACWAW } /* joininggroup=syriacwaw */, - { 0, 513, 7768, 16, 2, -PL_UIDEO } /* unifiedideograph=f */, - { 0, 7394, 0, 7, 0, PL_CJKEXTB } /* cjkextb */, - { 0, 7471, 1887, 7, 5, PL_POSIXLOWER } /* isposixlower */, - { 2, 7611, 0, 7, 0, PL_SOYO } /* soyombo */, - { 0, 184, 2967, 2, 18, PL_GEORGIANSUP } /* isgeorgiansupplement */, - { 1, 8822, 7951, 3, 5, PL_PCM } /* pcm=true */, - { 65, 3390, 0, 16, 0, PL_ETHIOPICEXT } /* ethiopicextended */, - { 0, 8096, 4105, 5, 4, PL_BAMU } /* scx=bamum */, - { 0, 184, 6472, 2, 4, PL_XPOSIXWORD } /* isword */, - { 0, 7136, 8071, 6, 5, PL_INOSAGE } /* block=osage */, - { 16, 6890, 1981, 4, 8, PL_INCYRILLIC } /* blk=cyrillic */, - { 67, 2229, 849, 16, 10, PL_CO } /* generalcategory=privateuse */, - { 46, 6953, 0, 9, 0, PL_LATINEXTD } /* latinextd */, - { 35, 21, 6505, 2, 11, PL_YISYLLABLES } /* inyisyllables */, - { 0, 8340, 5909, 3, 12, PL_JG__MALAYALAMTTA } /* jg=malayalamtta */, - { 0, 3129, 7858, 17, 6, PL_KHOJ } /* scriptextensions=khojki */, - { 32, 6210, 2788, 3, 17, PL_CHEROKEESUP } /* incherokeesupplement */, - { 0, 1929, 0, 5, 0, PL_XPOSIXUPPER } /* upper */, - { 0, 6890, 7200, 4, 8, PL_INGURMUKHI } /* blk=gurmukhi */, - { 0, 8096, 7956, 4, 5, PL_ADLM } /* scx=adlam */, - { 0, 8340, 8592, 3, 4, PL_JG__ZAIN } /* jg=zain */, - { 0, 8544, 0, 4, 0, PL_TAVT } /* tavt */, - { 41, 4402, 6319, 3, 10, PL_MYANMAREXTB } /* inmyanmarextb */, - { 1, 3129, 8296, 17, 4, PL_GONM } /* scriptextensions=gonm */, - { 5, 21, 4869, 2, 14, PL_LATINEXTD } /* inlatinextendedd */, - { 0, 7136, 250, 6, 33, PL_DIACRITICALSEXT } /* block=combiningdiacriticalmarksextended */, - { 1, 78, 0, 10, 0, PL_ARABICMATH } /* arabicmath */, - { 1, 1206, 4011, 3, 15, PL_TANGUTCOMPONENTS } /* intangutcomponents */, - { 1, 4440, 2251, 4, 8, PL_INGLAGOLITIC } /* inglagolitic */, - { 11, 184, 3266, 3, 2, PL_CWL } /* iscwl */, - { 8, 7822, 0, 4, 0, PL_HATR } /* hatr */, - { 5, 8240, 2329, 3, 20, PL_BC__RLE } /* bc=righttoleftembedding */, - { 180, 184, 8939, 2, 2, PL_ZP } /* iszp */, - { 0, 4402, 2046, 4, 9, PL_INMEETEIMAYEK } /* inmeeteimayek */, - { 3, 2754, 5612, 5, 9, PL_ALPHABETICPF } /* inalphabeticpf */, - { 0, 6890, 7016, 4, 9, PL_INOLDPERMIC } /* blk=oldpermic */, - { 0, 8816, 8720, 3, 3, PL_NV__3_SLASH_5 } /* nv=3/5 */, - { 39, 7136, 2967, 6, 11, PL_GEORGIANSUP } /* block=georgiansup */, - { 1, 8816, 7756, 3, 5, PL_NV__90000 } /* nv=90000 */, - { 20, 8816, 5220, 3, 1, PL_NV__0 } /* nv=0 */, - { 34, 7136, 382, 6, 33, PL_SUPSYMBOLSANDPICTOGRAPHS } /* block=supplementalsymbolsandpictographs */, - { 0, 7459, 8408, 3, 3, PL_MRO } /* sc=mro */, - { 10, 6472, 6971, 10, 9, PL_WB__MB } /* wordbreak=midnumlet */, - { 65, 6472, 3526, 10, 17, PL_RI } /* wordbreak=regionalindicator */, - { 322, 8026, 2349, 5, 20, PL_INPC__TOPANDBOTTOMANDRIGHT } /* inpc=topandbottomandright */, - { 7, 7296, 0, 8, 0, PL_SPECIALS } /* specials */, - { 1, 7136, 4494, 6, 15, PL_NARB } /* block=oldnortharabian */, - { 22, 8011, 5310, 3, 13, PL_XPOSIXDIGIT } /* gc=decimalnumber */, - { 1, 8096, 7900, 4, 6, PL_RJNG } /* scx=rejang */, - { 642, 184, 7436, 2, 7, PL_ELBA } /* iselbasan */, - { 0, 7288, 7810, 7, 6, PL_GOTH } /* script=gothic */, - { 0, 4314, 2437, 13, 9, PL_JG__YEHBARREE } /* joininggroup=yehbarree */, - { 0, 6210, 3291, 5, 14, PL_INCAUCASIANALBANIAN } /* incaucasianalbanian */, - { 1, 1448, 2676, 4, 17, PL_SUNDANESESUP } /* insundanesesupplement */, - { 0, 184, 5583, 2, 13, PL_QMARK } /* isquotationmark */, - { 17, 7459, 7646, 3, 7, PL_TAVT } /* sc=taiviet */, - { 0, 7136, 808, 6, 11, PL_PHONETICEXT } /* block=phoneticext */, - { 5, 184, 7991, 2, 5, PL_BUHD } /* isbuhid */, - { 0, 6890, 5933, 4, 12, PL_INMASARAMGONDI } /* blk=masaramgondi */, - { 4, 6890, 959, 4, 5, PL_MUSIC } /* blk=music */, - { 0, 6076, 3223, 11, 3, -PL_BIDIC } /* bidicontrol=no */, - { 0, 8011, 17, 4, 1, PL_SO } /* gc=so */, - { 0, 2169, 0, 20, 0, PL_PC } /* connectorpunctuation */, - { 0, 3129, 7918, 17, 4, PL_THAA } /* scriptextensions=thaa */, - { 1, 7380, 8672, 4, 3, PL_CCC__214 } /* ccc=214 */, - { 149, 6890, 8116, 4, 5, PL_INTAMIL } /* blk=tamil */, - { 18, 4314, 6494, 13, 11, PL_JG__YEHWITHTAIL } /* joininggroup=yehwithtail */, - { 3, 5544, 8673, 13, 2, PL_NV__14 } /* numericvalue=14 */, - { 2, 6890, 7534, 4, 7, PL_NB } /* blk=noblock */, - { 0, 949, 7997, 2, 2, PL_CI } /* ci=y */, - { 0, 6647, 725, 4, 3, PL_CASED } /* iscased */, - { 0, 5544, 8917, 13, 2, PL_NV__49 } /* numericvalue=49 */, - { 2, 184, 1961, 3, 20, PL_CJKRADICALSSUP } /* iscjkradicalssupplement */, - { 0, 6890, 4104, 4, 15, PL_BAMUMSUP } /* blk=bamumsupplement */, - { 0, 7380, 7708, 7, 2, PL_CCC__21 } /* ccc=ccc21 */, - { 21, 892, 7997, 17, 2, PL_VS } /* variationselector=y */, - { 97, 8816, 5219, 3, 7, PL_NV__1000000 } /* nv=1000000 */, - { 138, 184, 149, 3, 34, PL_DIACRITICALSSUP } /* iscombiningdiacriticalmarkssupplement */, - { 207, 6890, 7858, 4, 6, PL_INKHOJKI } /* blk=khojki */, - { 0, 184, 571, 3, 29, PL_CJKEXTC } /* iscjkunifiedideographsextensionc */, - { 5, 1417, 8941, 9, 2, PL_ZS } /* category=zs */, - { 1, 7344, 7997, 4, 2, PL_XIDS } /* xids=y */, - { 1, 6890, 2044, 4, 21, PL_MEETEIMAYEKEXT } /* blk=meeteimayekextensions */, - { 1, 6613, 1567, 3, 22, PL_COMPATJAMO } /* ishangulcompatibilityjamo */, - { 14, 7380, 8632, 7, 2, PL_CCC__91 } /* ccc=ccc91 */, - { 194, 974, 727, 24, 2, PL_CCC__DA } /* canonicalcombiningclass=da */, - { 19, 7136, 3288, 6, 17, PL_INCAUCASIANALBANIAN } /* block=caucasianalbanian */, - { 20, 7894, 3223, 6, 3, -PL_PATSYN } /* patsyn=no */, - { 5, 6890, 7674, 4, 7, PL_UCASEXT } /* blk=ucasext */, - { 2, 184, 6926, 2, 9, PL_SIND } /* iskhudawadi */, - { 8, 184, 2249, 2, 20, PL_GLAGOLITICSUP } /* isglagoliticsupplement */, - { 19, 8096, 7513, 4, 7, PL_MAND } /* scx=mandaic */, - { 0, 8121, 3223, 5, 3, -PL_UIDEO } /* uideo=no */, - { 5, 974, 8648, 27, 3, PL_CCC__130 } /* canonicalcombiningclass=ccc130 */, - { 147, 974, 2769, 24, 13, PL_CCC__214 } /* canonicalcombiningclass=attachedabove */, - { 8, 4542, 8112, 3, 3, PL_TAKR } /* istakr */, - { 1, 7136, 720, 6, 30, PL_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumericsupplement */, - { 0, 7136, 2484, 6, 19, PL_INEGYPTIANHIEROGLYPHS } /* block=egyptianhieroglyphs */, - { 577, 1133, 7997, 26, 2, PL_PCM } /* prependedconcatenationmark=y */, - { 44, 3129, 1797, 17, 4, PL_MODI } /* scriptextensions=modi */, - { 1, 7288, 8424, 7, 4, PL_NBAT } /* script=nbat */, - { 0, 1426, 2823, 22, 18, PL_INSC__CONSONANTSUBJOINED } /* indicsyllabiccategory=consonantsubjoined */, - { 0, 5583, 7768, 13, 6, -PL_QMARK } /* quotationmark=false */, - { 0, 3521, 0, 5, 0, PL_XPOSIXSPACE } /* space */, - { 5, 3129, 7043, 17, 9, PL_PAUC } /* scriptextensions=paucinhau */, - { 0, 7459, 2895, 3, 8, PL_ETHI } /* sc=ethiopic */, - { 1, 7288, 8216, 7, 4, PL_ARMI } /* script=armi */, - { 385, 8096, 4494, 4, 15, PL_NARB } /* scx=oldnortharabian */, - { 0, 21, 5414, 2, 13, PL_LOWSURROGATES } /* inlowsurrogates */, - { 1, 5134, 6697, 3, 9, PL_PHNX } /* isphoenician */, - { 1, 184, 3516, 2, 10, PL_XPOSIXSPACE } /* iswhitespace */, - { 18, 8376, 1496, 3, 2, PL_LB__CB } /* lb=cb */, - { 0, 6890, 7492, 4, 7, PL_INKANNADA } /* blk=kannada */, - { 28, 6713, 7710, 3, 1, PL_IN__6 } /* in=6 */, - { 51, 6483, 7997, 11, 2, PL_XIDC } /* xidcontinue=y */, - { 0, 5945, 0, 12, 0, PL_MATHALPHANUM } /* mathalphanum */, - { 28, 7136, 1234, 6, 24, PL_ARABICPFA } /* block=arabicpresentationformsa */, - { 0, 184, 7120, 2, 4, PL_BALI } /* isbali */, - { 1, 8196, 8858, 4, 3, PL_AGE__4 } /* age=v40 */, - { 0, 5801, 0, 5, 0, PL_KHMR } /* khmer */, - { 0, 6890, 8532, 4, 4, PL_TAGS } /* blk=tags */, - { 0, 8340, 5476, 3, 3, PL_JG__NUN } /* jg=nun */, - { 0, 974, 5981, 24, 12, PL_CCC__0 } /* canonicalcombiningclass=notreordered */, - { 282, 117, 5363, 3, 12, PL_IPAEXT } /* inipaextensions */, - { 107, 184, 5825, 2, 7, PL_MAHJONG } /* ismahjong */, - { 79, 184, 8408, 2, 3, PL_MRO } /* ismro */, - { 0, 184, 5401, 2, 13, PL_ZL } /* islineseparator */, - { 0, 5375, 36, 12, 1, PL_JT__T } /* joiningtype=t */, - { 2, 6890, 690, 4, 9, PL_INCUNEIFORM } /* blk=cuneiform */, - { 4, 184, 5694, 3, 11, PL_CYRILLICEXTB } /* iscyrillicextb */, - { 196, 184, 11, 2, 3, PL_DIA } /* isdia */, - { 0, 5134, 469, 3, 10, PL_P } /* ispunctuation */, - { 309, 3129, 7520, 17, 7, PL_MARC } /* scriptextensions=marchen */, - { 712, 7136, 660, 6, 30, PL_CJKEXTF } /* block=cjkunifiedideographsextensionf */, - { 0, 6890, 6439, 4, 11, PL_INSYLOTINAGRI } /* blk=sylotinagri */, - { 0, 8011, 6796, 3, 10, PL_CN } /* gc=unassigned */, - { 146, 8096, 2598, 4, 4, PL_MERO } /* scx=mero */, - { 1, 184, 3458, 2, 10, PL_MANI } /* ismanichaean */, - { 66, 7288, 8464, 7, 4, PL_PHNX } /* script=phnx */, - { 0, 6329, 7946, 11, 5, PL_NV__NAN } /* numerictype=none */, - { 0, 7136, 7240, 6, 8, PL_JAMOEXTB } /* block=jamoextb */, - { 0, 3129, 2967, 17, 8, PL_GEOR } /* scriptextensions=georgian */, - { 0, 8031, 4647, 5, 12, PL_INZANABAZARSQUARE } /* inzanabazarsquare */, - { 0, 974, 8688, 27, 2, PL_CCC__26 } /* canonicalcombiningclass=ccc26 */, - { 11, 8091, 0, 5, 0, PL_RUNR } /* runic */, - { 2, 6890, 2636, 4, 9, PL_INMONGOLIAN } /* blk=mongolian */, - { 171, 4542, 47, 5, 1, PL_TERM } /* isterm */, - { 1, 7136, 5362, 6, 6, PL_IPAEXT } /* block=ipaext */, - { 3, 8492, 0, 4, 0, PL_RUNR } /* runr */, - { 33, 8011, 6098, 3, 11, PL_L_AMP_ } /* gc=casedletter */, - { 0, 8111, 0, 5, 0, PL_TAKR } /* takri */, - { 0, 1892, 7997, 5, 2, PL_CASED } /* cased=y */, - { 0, 7136, 6926, 6, 9, PL_INKHUDAWADI } /* block=khudawadi */, - { 0, 7478, 2108, 3, 6, PL_SINH } /* issinhala */, - { 2, 184, 3854, 2, 10, PL_SM } /* ismathsymbol */, - { 0, 8196, 8876, 4, 3, PL_AGE__6_DOT_1 } /* age=v61 */, - { 0, 1133, 3223, 26, 3, -PL_PCM } /* prependedconcatenationmark=no */, - { 9, 6613, 5869, 3, 3, PL_HMNG } /* ishmng */, - { 1, 8011, 5253, 3, 5, PL_XPOSIXDIGIT } /* gc=digit */, - { 4, 1503, 7437, 3, 6, PL_INELBASAN } /* inelbasan */, - { 6, 184, 7900, 2, 6, PL_RJNG } /* isrejang */, - { 0, 7459, 2967, 3, 4, PL_SC__GEOR } /* sc=geor */, - { 1, 8096, 8520, 4, 4, PL_SHAW } /* scx=shaw */, - { 0, 184, 7168, 2, 8, PL_EXT } /* isextender */, - { 293, 4542, 7313, 3, 3, PL_TAGB } /* istagb */, - { 0, 7136, 183, 6, 20, PL_MISCSYMBOLS } /* block=miscellaneoussymbols */, - { 0, 2693, 0, 19, 0, PL_SUPARROWSA } /* supplementalarrowsa */, - { 132, 6890, 42, 4, 26, PL_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatibilityideographs */, - { 65, 6210, 661, 3, 29, PL_CJKEXTF } /* incjkunifiedideographsextensionf */, - { 11, 1358, 7768, 20, 6, -PL_CE } /* compositionexclusion=false */, - { 2, 5250, 7768, 8, 2, -PL_XPOSIXXDIGIT } /* hexdigit=f */, - { 267, 8196, 8759, 4, 3, PL_AGE__7 } /* age=7.0 */, - { 0, 4402, 184, 3, 33, PL_MISCPICTOGRAPHS } /* inmiscellaneoussymbolsandpictographs */, - { 17, 6706, 8711, 10, 3, PL_IN__3_DOT_1 } /* presentin=3.1 */, - { 4, 8096, 7858, 4, 6, PL_KHOJ } /* scx=khojki */, - { 268, 4542, 4570, 3, 14, PL_LT } /* istitlecaseletter */, - { 3, 5968, 4510, 3, 14, PL_SARB } /* inoldsoutharabian */, - { 3, 5250, 3581, 8, 2, PL_XPOSIXXDIGIT } /* hexdigit=t */, - { 0, 58, 3223, 4, 3, -PL_IDEO } /* ideo=no */, - { 25, 8096, 6926, 4, 9, PL_SIND } /* scx=khudawadi */, - { 0, 7288, 78, 7, 6, PL_SC__ARAB } /* script=arabic */, - { 0, 1417, 1, 9, 1, PL_N } /* category=n */, - { 1, 7900, 0, 6, 0, PL_RJNG } /* rejang */, - { 2, 8340, 5, 3, 1, PL_JG__E } /* jg=e */, - { 4, 3129, 7248, 17, 8, PL_JAVA } /* scriptextensions=javanese */, - { 32, 184, 1, 2, 1, PL_N } /* isn */, - { 17, 8340, 4939, 3, 14, PL_JG__MANICHAEANFIVE } /* jg=manichaeanfive */, - { 24, 7136, 5596, 6, 13, PL_VERTICALFORMS } /* block=verticalforms */, - { 0, 7380, 3262, 4, 5, PL_CCC__B } /* ccc=below */, - { 48, 4569, 0, 15, 0, PL_LT } /* titlecaseletter */, - { 0, 7478, 2694, 3, 18, PL_SUPARROWSA } /* issupplementalarrowsa */, - { 0, 1834, 3223, 21, 3, -PL_CWCF } /* changeswhencasefolded=no */, - { 0, 6221, 1682, 4, 20, PL_INDICNUMBERFORMS } /* incommonindicnumberforms */, - { 0, 7288, 6696, 7, 10, PL_PHNX } /* script=phoenician */, - { 24, 11, 7951, 2, 5, PL_DI } /* di=true */, - { 0, 184, 4329, 2, 15, PL_LL } /* islowercaseletter */, - { 0, 8096, 8568, 4, 4, PL_VAI } /* scx=vaii */, - { 1, 1448, 2724, 5, 7, PL_SUPARROWSB } /* insuparrowsb */, - { 0, 7345, 3223, 7, 3, -PL_IDS } /* idstart=no */, - { 0, 6483, 7768, 4, 6, -PL_XIDC } /* xidc=false */, - { 29, 3129, 8208, 17, 4, PL_AHOM } /* scriptextensions=ahom */, - { 261, 2023, 3223, 21, 2, -PL_LOE } /* logicalorderexception=n */, - { 0, 1354, 3223, 24, 3, -PL_COMPEX } /* fullcompositionexclusion=no */, - { 0, 3516, 7951, 10, 5, PL_XPOSIXSPACE } /* whitespace=true */, - { 8, 6890, 2814, 4, 9, PL_HALFMARKS } /* blk=halfmarks */, - { 2, 5825, 0, 12, 0, PL_MAHJONG } /* mahjongtiles */, - { 1, 8822, 7768, 3, 6, -PL_PCM } /* pcm=false */, - { 3, 7459, 7043, 3, 9, PL_PAUC } /* sc=paucinhau */, - { 136, 1358, 7997, 20, 2, PL_CE } /* compositionexclusion=y */, - { 160, 1834, 7997, 21, 4, PL_CWCF } /* changeswhencasefolded=yes */, - { 92, 8096, 7520, 4, 7, PL_MARC } /* scx=marchen */, - { 7, 5544, 7942, 13, 4, PL_NV__1_SLASH_12 } /* numericvalue=1/12 */, - { 1, 4314, 87, 13, 2, PL_JG__HE } /* joininggroup=he */, - { 0, 8340, 5873, 3, 12, PL_JG__MALAYALAMNNA } /* jg=malayalamnna */, - { 3, 184, 1898, 3, 20, PL_CWT } /* ischangeswhentitlecased */, - { 32, 7380, 8171, 4, 2, PL_CCC__23 } /* ccc=23 */, - { 304, 2859, 7216, 18, 8, PL_DT__ISO } /* decompositiontype=isolated */, - { 32, 7288, 3583, 8, 3, PL_BRAI } /* script=brai */, - { 0, 8340, 4977, 3, 4, PL_JG__KAPH } /* jg=kaph */, - { 1, 21, 8056, 2, 5, PL_INNUSHU } /* innushu */, - { 8, 8340, 4384, 3, 5, PL_JG__SADHE } /* jg=sadhe */, - { 7, 4239, 3223, 4, 3, -PL_DASH } /* dash=no */, - { 4, 3129, 8436, 17, 4, PL_NSHU } /* scriptextensions=nshu */, - { 0, 1746, 1627, 21, 7, PL_GCB__CN } /* graphemeclusterbreak=control */, - { 0, 1503, 1002, 3, 10, PL_ENCLOSEDCJK } /* inenclosedcjk */, - { 85, 3129, 8356, 17, 4, PL_KNDA } /* scriptextensions=knda */, - { 1, 3129, 8528, 17, 4, PL_SYRC } /* scriptextensions=syrc */, - { 724, 6890, 448, 5, 31, PL_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbolsandpunctuation */, - { 1, 2674, 0, 4, 0, PL_SUND } /* sund */, - { 11, 84, 7997, 4, 2, PL_MATH } /* math=y */, - { 167, 84, 7768, 4, 6, -PL_MATH } /* math=false */, - { 1, 6221, 2467, 4, 17, PL_COUNTINGROD } /* incountingrodnumerals */, - { 16, 8204, 3223, 4, 2, -PL_POSIXXDIGIT } /* ahex=n */, - { 0, 3129, 2598, 17, 19, PL_MERO } /* scriptextensions=meroitichieroglyphs */, - { 686, 4314, 4939, 13, 14, PL_JG__MANICHAEANFIVE } /* joininggroup=manichaeanfive */, - { 0, 184, 2895, 2, 11, PL_ETHIOPICSUP } /* isethiopicsup */, - { 61, 8344, 6164, 3, 11, PL_JT__D } /* jt=dualjoining */, - { 0, 5362, 0, 13, 0, PL_IPAEXT } /* ipaextensions */, - { 10, 7288, 8552, 7, 4, PL_SC__TGLG } /* script=tglg */, - { 41, 4554, 112, 14, 2, PL_SB__SC } /* sentencebreak=sc */, - { 309, 7288, 1111, 7, 4, PL_SC__KANA } /* script=kana */, - { 0, 8011, 6351, 3, 11, PL_NO } /* gc=othernumber */, - { 8, 5051, 7996, 5, 5, PL_DT__NONE } /* nfkdqc=yes */, - { 418, 974, 8678, 24, 3, PL_CCC__B } /* canonicalcombiningclass=220 */, - { 0, 5245, 3223, 13, 2, -PL_POSIXXDIGIT } /* asciihexdigit=n */, - { 599, 7380, 8639, 7, 3, PL_CCC__118 } /* ccc=ccc118 */, - { 0, 8096, 7780, 4, 4, PL_CARI } /* scx=cari */, - { 0, 7604, 0, 7, 0, PL_SIDD } /* siddham */, - { 3, 2100, 3058, 3, 17, PL_ORNAMENTALDINGBATS } /* isornamentaldingbats */, - { 1, 8244, 0, 4, 0, PL_BHKS } /* bhks */, - { 194, 415, 0, 32, 0, PL_INIDC } /* ideographicdescriptioncharacters */, - { 0, 4314, 5871, 13, 5, PL_JG__GAMAL } /* joininggroup=gamal */, - { 14, 7288, 7569, 7, 7, PL_OSMA } /* script=osmanya */, - { 6, 4402, 0, 17, 0, PL_INMEROITICCURSIVE } /* inmeroiticcursive */, - { 4, 8816, 8655, 3, 2, PL_NV__33 } /* nv=33 */, - { 0, 58, 7768, 4, 6, -PL_IDEO } /* ideo=false */, - { 9, 6613, 1161, 3, 3, PL_HANG } /* ishang */, - { 1, 7288, 8500, 7, 4, PL_SARB } /* script=sarb */, - { 2, 3129, 7248, 17, 4, PL_JAVA } /* scriptextensions=java */, - { 2, 7136, 1378, 6, 24, PL_HIGHPUSURROGATES } /* block=highprivateusesurrogates */, - { 0, 184, 8356, 2, 4, PL_KNDA } /* isknda */, - { 869, 6076, 0, 11, 0, PL_BIDIC } /* bidicontrol */, - { 0, 1159, 3223, 25, 3, -PL_CWKCF } /* changeswhennfkccasefolded=no */, - { 282, 7136, 7415, 6, 7, PL_CJKEXTE } /* block=cjkexte */, - { 197, 1506, 0, 14, 0, PL_MUSIC } /* musicalsymbols */, - { 0, 7774, 1191, 6, 9, PL_CI } /* _case_ignorable */, - { 0, 7457, 4434, 5, 15, PL_INSC__MODIFYINGLETTER } /* insc=modifyingletter */, - { 661, 2108, 3709, 5, 13, PL_HALFANDFULLFORMS } /* inhalfandfullforms */, - { 0, 5544, 8156, 13, 4, PL_NV__11_SLASH_2 } /* numericvalue=11/2 */, - { 1, 3129, 7007, 17, 9, PL_ITAL } /* scriptextensions=olditalic */, - { 6, 7288, 4404, 7, 15, PL_MERC } /* script=meroiticcursive */, - { 0, 8240, 5633, 3, 12, PL_BC__AN } /* bc=arabicnumber */, - { 1, 7312, 0, 8, 0, PL_TAGB } /* tagbanwa */, - { 22, 3129, 6626, 17, 10, PL_KHAR } /* scriptextensions=kharoshthi */, - { 35, 11, 7768, 2, 6, -PL_DI } /* di=false */, - { 1, 7780, 0, 6, 0, PL_CARI } /* carian */, - { 0, 8822, 7768, 3, 2, -PL_PCM } /* pcm=f */, - { 0, 4590, 7997, 2, 4, PL_VS } /* vs=yes */, - { 5, 8340, 8828, 3, 3, PL_JG__REH } /* jg=reh */, - { 0, 3516, 7997, 10, 2, PL_XPOSIXSPACE } /* whitespace=y */, - { 4, 3129, 8464, 17, 4, PL_PHNX } /* scriptextensions=phnx */, - { 640, 4314, 7864, 13, 6, PL_JG__LAMADH } /* joininggroup=lamadh */, - { 5, 6221, 6598, 4, 8, PL_COMPATJAMO } /* incompatjamo */, - { 0, 7136, 3962, 6, 16, PL_SUPMATHOPERATORS } /* block=supmathoperators */, - { 454, 3129, 8216, 17, 4, PL_ARMI } /* scriptextensions=armi */, - { 0, 6890, 6586, 4, 10, PL_CJKSTROKES } /* blk=cjkstrokes */, - { 2, 6872, 0, 9, 0, PL_ARABICPFB } /* arabicpfb */, - { 3, 8780, 3223, 3, 2, -PL_CWT } /* cwt=n */, - { 1, 7136, 7852, 6, 6, PL_KANBUN } /* block=kanbun */, - { 4, 4614, 0, 8, 0, PL_VEDICEXT } /* vedicext */, - { 24, 1918, 7997, 21, 2, PL_CWU } /* changeswhenuppercased=y */, - { 1, 6890, 2044, 4, 11, PL_INMEETEIMAYEK } /* blk=meeteimayek */, - { 738, 5531, 0, 13, 0, PL_MISCTECHNICAL } /* misctechnical */, - { 1, 7136, 7870, 6, 6, PL_INLEPCHA } /* block=lepcha */, - { 3, 2859, 7541, 18, 7, PL_DT__NB } /* decompositiontype=nobreak */, - { 0, 7136, 1691, 6, 11, PL_NUMBERFORMS } /* block=numberforms */, - { 38, 8572, 8789, 3, 3, PL_WB__EBG } /* wb=ebg */, - { 0, 6647, 5286, 4, 11, PL_CI } /* iscaseignorable */, - { 0, 3526, 7997, 17, 4, PL_RI } /* regionalindicator=yes */, - { 2, 3129, 7569, 17, 4, PL_OSMA } /* scriptextensions=osma */, - { 1, 8096, 7918, 4, 6, PL_THAA } /* scx=thaana */, - { 0, 8096, 1797, 4, 4, PL_MODI } /* scx=modi */, - { 1, 7136, 1768, 6, 22, PL_MISCTECHNICAL } /* block=miscellaneoustechnical */, - { 12, 6890, 2712, 4, 19, PL_SUPARROWSB } /* blk=supplementalarrowsb */, - { 64, 8196, 8753, 4, 3, PL_AGE__6_DOT_2 } /* age=6.2 */, - { 8, 5968, 8062, 3, 4, PL_INOGHAM } /* inogham */, - { 3, 8504, 34, 3, 6, PL_SB__EX } /* sb=extend */, - { 0, 7380, 8648, 4, 3, PL_CCC__130 } /* ccc=130 */, - { 339, 218, 3521, 4, 5, PL_POSIXSPACE } /* perlspace */, - { 206, 8011, 1499, 3, 1, PL_Z } /* gc=z */, - { 256, 6890, 2636, 4, 19, PL_MONGOLIANSUP } /* blk=mongoliansupplement */, - { 5, 184, 8604, 2, 4, PL_ZYYY } /* iszyyy */, - { 3, 2107, 0, 21, 0, PL_SINHALAARCHAICNUMBERS } /* sinhalaarchaicnumbers */, - { 916, 7288, 7010, 7, 4, PL_ITAL } /* script=ital */, - { 1090, 184, 2408, 2, 4, PL_BRAH } /* isbrah */, - { 0, 1417, 4239, 9, 15, PL_PD } /* category=dashpunctuation */, - { 165, 7689, 8193, 3, 3, PL_ADLM } /* isadlm */, - { 12, 1929, 7951, 9, 5, PL_XPOSIXUPPER } /* uppercase=true */, - { 1, 3129, 1981, 17, 8, PL_CYRL } /* scriptextensions=cyrillic */, - { 38, 8240, 6328, 3, 2, PL_BC__BN } /* bc=bn */, - { 18, 7380, 8699, 4, 3, PL_CCC__DB } /* ccc=233 */, - { 1, 5134, 809, 3, 27, PL_PHONETICEXTSUP } /* isphoneticextensionssupplement */, - { 0, 42, 0, 26, 0, PL_CJKCOMPATIDEOGRAPHS } /* cjkcompatibilityideographs */, - { 10, 1897, 7951, 21, 5, PL_CWT } /* changeswhentitlecased=true */, - { 23, 7288, 6373, 7, 11, PL_HMNG } /* script=pahawhhmong */, - { 0, 3560, 0, 17, 0, PL_SUTTONSIGNWRITING } /* suttonsignwriting */, - { 1728, 2044, 0, 14, 0, PL_MEETEIMAYEKEXT } /* meeteimayekext */, - { 0, 6263, 3642, 10, 16, PL_LB__CP } /* linebreak=closeparenthesis */, - { 17, 6263, 8927, 10, 2, PL_GCB__L } /* linebreak=jl */, - { 266, 6263, 5762, 10, 3, PL_LB__ZWJ } /* linebreak=zwj */, - { 65, 8556, 0, 4, 0, PL_THAI } /* thai */, - { 0, 8816, 8156, 3, 4, PL_NV__11_SLASH_2 } /* nv=11/2 */, - { 3, 6890, 4827, 4, 6, PL_KANGXI } /* blk=kangxi */, - { 0, 1503, 721, 3, 15, PL_ENCLOSEDALPHANUM } /* inenclosedalphanum */, - { 40, 6263, 2440, 10, 2, PL_LB__BA } /* linebreak=ba */, - { 1, 2100, 8453, 3, 3, PL_ORYA } /* isorya */, - { 9, 7499, 0, 7, 0, PL_KALI } /* kayahli */, - { 276, 21, 7232, 2, 8, PL_JAMOEXTA } /* injamoexta */, - { 0, 4314, 4792, 13, 7, PL_JG__HEHGOAL } /* joininggroup=hehgoal */, - { 1, 6890, 1981, 4, 18, PL_CYRILLICSUP } /* blk=cyrillicsupplement */, - { 922, 4314, 6526, 13, 10, PL_JG__AFRICANQAF } /* joininggroup=africanqaf */, - { 6, 4554, 3084, 14, 3, PL_SB__SE } /* sentencebreak=sep */, - { 0, 6890, 568, 4, 2, PL_NB } /* blk=nb */, - { 0, 4554, 496, 14, 2, PL_LB__NU } /* sentencebreak=nu */, - { 0, 7689, 29, 4, 4, PL_ARAB } /* isarabic */, - { 10, 1426, 2408, 22, 19, PL_INSC__BRAHMIJOININGNUMBER } /* indicsyllabiccategory=brahmijoiningnumber */, - { 1, 6263, 83, 10, 2, PL_LB__CM } /* linebreak=cm */, - { 191, 7459, 3566, 3, 11, PL_SGNW } /* sc=signwriting */, - { 0, 2229, 599, 16, 2, PL_XPOSIXCNTRL } /* generalcategory=cc */, - { 0, 4402, 1507, 3, 13, PL_MUSIC } /* inmusicalsymbols */, - { 1837, 5135, 0, 14, 0, PL_ZS } /* spaceseparator */, - { 11, 2100, 3915, 3, 15, PL_PO } /* isotherpunctuation */, - { 2565, 184, 2044, 2, 11, PL_MTEI } /* ismeeteimayek */, - { 0, 8340, 6384, 3, 11, PL_JG__ROHINGYAYEH } /* jg=rohingyayeh */, - { 0, 7136, 4687, 6, 14, PL_CJKCOMPATFORMS } /* block=cjkcompatforms */, - { 0, 3129, 7632, 17, 7, PL_TGLG } /* scriptextensions=tagalog */, - { 0, 7344, 7768, 4, 2, -PL_XIDS } /* xids=f */, - { 0, 7288, 7520, 7, 4, PL_MARC } /* script=marc */, - { 0, 6890, 2841, 4, 6, PL_INCOPTIC } /* blk=coptic */, - { 525, 8096, 690, 4, 9, PL_XSUX } /* scx=cuneiform */, - { 23, 8816, 8685, 3, 2, PL_NV__24 } /* nv=24 */, - { 0, 2100, 8457, 3, 3, PL_OSGE } /* isosge */, - { 1, 4542, 4011, 3, 5, PL_TANG } /* istangut */, - { 1, 8340, 4925, 3, 14, PL_JG__MANICHAEANBETH } /* jg=manichaeanbeth */, - { 0, 184, 7858, 2, 4, PL_KHOJ } /* iskhoj */, - { 0, 6890, 4799, 4, 14, PL_HIGHSURROGATES } /* blk=highsurrogates */, - { 0, 1417, 3075, 9, 18, PL_ZP } /* category=paragraphseparator */, - { 0, 8340, 8810, 3, 3, PL_JG__MIM } /* jg=mim */, - { 0, 1679, 0, 2, 0, PL_PC } /* pc */, - { 0, 8786, 806, 3, 1, PL_EA__W } /* ea=w */, - { 7, 6926, 0, 9, 0, PL_SIND } /* khudawadi */, - { 0, 7344, 7997, 8, 4, PL_XIDS } /* xidstart=yes */, - { 0, 6713, 5219, 3, 2, PL_IN__10 } /* in=10 */, - { 625, 7459, 8516, 3, 4, PL_SGNW } /* sc=sgnw */, - { 2, 3129, 7611, 17, 7, PL_SOYO } /* scriptextensions=soyombo */, - { 30, 7136, 3237, 6, 17, PL_ALCHEMICAL } /* block=alchemicalsymbols */, - { 1077, 3129, 8111, 17, 5, PL_TAKR } /* scriptextensions=takri */, - { 0, 7380, 7709, 7, 2, PL_CCC__16 } /* ccc=ccc16 */, - { 1105, 8096, 8416, 4, 4, PL_MYMR } /* scx=mymr */, - { 1, 7136, 4659, 6, 14, PL_ANCIENTSYMBOLS } /* block=ancientsymbols */, - { 0, 5284, 7997, 13, 4, PL_CI } /* caseignorable=yes */, - { 1, 5192, 5363, 3, 5, PL_IPAEXT } /* isipaext */, - { 3, 6483, 7768, 4, 2, -PL_XIDC } /* xidc=f */, - { 644, 184, 5813, 2, 12, PL_NL } /* isletternumber */, - { 0, 5657, 0, 5, 0, PL_BIDIM } /* bidim */, - { 2, 974, 8651, 24, 3, PL_CCC__132 } /* canonicalcombiningclass=132 */, - { 0, 8340, 4384, 3, 3, PL_JG__SAD } /* jg=sad */, - { 0, 513, 7951, 16, 5, PL_UIDEO } /* unifiedideograph=true */, - { 1, 2859, 3543, 18, 5, PL_DT__SML } /* decompositiontype=small */, - { 4, 184, 84, 2, 4, PL_MATH } /* ismath */, - { 0, 5557, 7768, 13, 6, -PL_PATSYN } /* patternsyntax=false */, - { 2240, 3067, 0, 8, 0, PL_DINGBATS } /* dingbats */, - { 17, 7840, 67, 3, 4, PL_VSSUP } /* isvssup */, - { 69, 5051, 3223, 14, 3, PL_NFKDQC__N } /* nfkdquickcheck=no */, - { 9, 7485, 3521, 7, 5, PL_XPOSIXSPACE } /* isxperlspace */, - { 3, 7459, 2895, 3, 4, PL_ETHI } /* sc=ethi */, - { 3, 4542, 238, 3, 3, PL_TALE } /* istale */, - { 0, 570, 0, 30, 0, PL_CJKEXTC } /* cjkunifiedideographsextensionc */, - { 4, 6713, 8726, 3, 3, PL_IN__4_DOT_1 } /* in=4.1 */, - { 914, 7288, 2967, 7, 8, PL_SC__GEOR } /* script=georgian */, - { 2121, 6706, 8864, 10, 3, PL_IN__5 } /* presentin=v50 */, - { 666, 6908, 0, 9, 0, PL_EMOTICONS } /* emoticons */, - { 928, 7288, 8284, 7, 4, PL_DSRT } /* script=dsrt */, - { 394, 3129, 8588, 17, 4, PL_YI } /* scriptextensions=yiii */, - { 96, 7288, 8468, 7, 4, PL_MIAO } /* script=plrd */, - { 0, 2236, 3084, 13, 9, PL_ZL } /* category=lineseparator */, - { 403, 8011, 1012, 3, 6, PL_L } /* gc=letter */, - { 0, 7344, 3581, 4, 2, PL_XIDS } /* xids=t */, - { 2, 1392, 0, 9, 0, PL_CS } /* surrogate */, - { 4, 117, 5363, 3, 5, PL_IPAEXT } /* inipaext */, - { 29, 5645, 7997, 5, 2, PL_BIDIC } /* bidic=y */, - { 1, 513, 7997, 16, 4, PL_UIDEO } /* unifiedideograph=yes */, - { 145, 184, 1589, 2, 23, PL_LATINEXTADDITIONAL } /* islatinextendedadditional */, - { 12, 5544, 8741, 13, 3, PL_NV__5_SLASH_6 } /* numericvalue=5/6 */, - { 0, 7288, 8488, 7, 4, PL_RJNG } /* script=rjng */, - { 0, 8288, 3191, 3, 3, PL_DT__MED } /* dt=med */, - { 0, 1939, 0, 21, 0, PL_CJKCOMPATFORMS } /* cjkcompatibilityforms */, - { 0, 1417, 4569, 9, 15, PL_LT } /* category=titlecaseletter */, - { 136, 4314, 8774, 13, 3, PL_JG__BEH } /* joininggroup=beh */, - { 0, 7320, 0, 8, 0, PL_TFNG } /* tifinagh */, - { 1, 8572, 6395, 3, 11, PL_WB__SQ } /* wb=singlequote */, - { 945, 6890, 1981, 4, 11, PL_CYRILLICSUP } /* blk=cyrillicsup */, - { 0, 6890, 6029, 4, 8, PL_PHAISTOS } /* blk=phaistos */, - { 323, 7459, 1680, 3, 6, PL_SC__ZYYY } /* sc=common */, - { 0, 7689, 6865, 4, 7, PL_ARABICPFA } /* isarabicpfa */, - { 7, 5134, 3077, 4, 16, PL_ZP } /* isparagraphseparator */, - { 1281, 1402, 6686, 24, 10, PL_INPC__OVERSTRUCK } /* indicpositionalcategory=overstruck */, - { 25, 8096, 8596, 4, 4, PL_ZANB } /* scx=zanb */, - { 0, 1929, 7768, 9, 6, -PL_XPOSIXUPPER } /* uppercase=false */, - { 1152, 6210, 2788, 3, 10, PL_CHEROKEESUP } /* incherokeesup */, - { 0, 8096, 8384, 4, 4, PL_LINB } /* scx=linb */, - { 1846, 7471, 8001, 7, 5, PL_POSIXCNTRL } /* isposixcntrl */, - { 3, 2229, 1499, 16, 1, PL_Z } /* generalcategory=z */, - { 0, 5544, 8685, 13, 2, PL_NV__24 } /* numericvalue=24 */, - { 0, 7288, 7200, 7, 8, PL_SC__GURU } /* script=gurmukhi */, - { 1472, 6706, 7732, 10, 1, PL_IN__5 } /* presentin=5 */, - { 44, 7689, 183, 4, 2, PL_ARMI } /* isarmi */, - { 1, 8340, 5019, 3, 4, PL_JG__TETH } /* jg=teth */, - { 4, 974, 8617, 24, 2, PL_CCC__31 } /* canonicalcombiningclass=31 */, - { 6, 7459, 7780, 3, 4, PL_CARI } /* sc=cari */, - { 0, 7415, 0, 7, 0, PL_CJKEXTE } /* cjkexte */, - { 0, 8572, 7352, 3, 7, PL_WB__LE } /* wb=aletter */, - { 0, 3129, 2787, 17, 8, PL_CHER } /* scriptextensions=cherokee */, - { 0, 184, 5310, 2, 13, PL_XPOSIXDIGIT } /* isdecimalnumber */, - { 771, 1448, 352, 5, 30, PL_SUPMATHOPERATORS } /* insupplementalmathematicaloperators */, - { 1156, 7136, 2044, 6, 21, PL_MEETEIMAYEKEXT } /* block=meeteimayekextensions */, - { 0, 42, 0, 9, 0, PL_CJKCOMPAT } /* cjkcompat */, - { 0, 7136, 7876, 6, 6, PL_INLYCIAN } /* block=lycian */, - { 0, 7136, 2787, 6, 11, PL_CHEROKEESUP } /* block=cherokeesup */, - { 0, 5315, 0, 5, 0, PL_XPOSIXALNUM } /* alnum */, - { 0, 8816, 8627, 3, 3, PL_NV__1_SLASH_8 } /* nv=1/8 */, - { 2179, 184, 8252, 2, 4, PL_BUHD } /* isbuhd */, - { 0, 184, 8284, 2, 4, PL_DSRT } /* isdsrt */, - { 0, 316, 0, 33, 0, PL_MISCMATHSYMBOLSB } /* miscellaneousmathematicalsymbolsb */, - { 0, 8096, 8360, 4, 4, PL_KTHI } /* scx=kthi */, - { 848, 5544, 7708, 13, 6, PL_NV__216000 } /* numericvalue=216000 */, - { 322, 45, 0, 2, 0, PL_CO } /* co */, - { 1221, 7689, 1260, 4, 22, PL_ARABICPFB } /* isarabicpresentationformsb */, - { 0, 7136, 3067, 6, 8, PL_DINGBATS } /* block=dingbats */, - { 0, 184, 6566, 2, 10, PL_BOXDRAWING } /* isboxdrawing */, - { 4, 2750, 7951, 4, 5, PL_TERM } /* term=true */, - { 5, 6890, 5093, 4, 14, PL_PHONETICEXTSUP } /* blk=phoneticextsup */, - { 516, 8816, 7750, 3, 3, PL_NV__800 } /* nv=800 */, - { 5, 7288, 6626, 7, 4, PL_KHAR } /* script=khar */, - { 16, 8026, 2349, 5, 12, PL_INPC__TOPANDBOTTOM } /* inpc=topandbottom */, - { 259, 8376, 4561, 3, 2, PL_LB__EB } /* lb=eb */, - { 0, 6890, 5801, 4, 12, PL_KHMERSYMBOLS } /* blk=khmersymbols */, - { 2692, 836, 0, 28, 0, PL_SUPPUAA } /* supplementaryprivateuseareaa */, - { 0, 8376, 184, 3, 2, PL_LB__IS } /* lb=is */, - { 17, 1206, 7313, 3, 7, PL_INTAGBANWA } /* intagbanwa */, - { 606, 8011, 74, 3, 2, PL_ME } /* gc=me */, - { 1, 1111, 0, 4, 0, PL_KANA } /* kana */, - { 0, 6263, 1306, 10, 13, PL_LB__CM } /* linebreak=combiningmark */, - { 2861, 8376, 5762, 3, 2, PL_LB__ZW } /* lb=zw */, - { 32, 7224, 5315, 8, 5, PL_XPOSIXALNUM } /* isxposixalnum */, - { 128, 8086, 3223, 5, 2, -PL_QMARK } /* qmark=n */, - { 0, 4449, 7373, 4, 7, PL_NFCQC__M } /* nfcqc=maybe */, - { 0, 7816, 3223, 6, 3, -PL_GRBASE } /* grbase=no */, - { 30, 4827, 0, 6, 0, PL_KANGXI } /* kangxi */, - { 264, 8096, 8516, 4, 4, PL_SGNW } /* scx=sgnw */, - { 18, 1701, 7768, 2, 2, -PL_SD } /* sd=f */, - { 2, 184, 7366, 2, 7, PL_BENG } /* isbengali */, - { 10, 122, 7768, 9, 2, -PL_DIA } /* diacritic=f */, - { 184, 3866, 0, 16, 0, PL_MISCMATHSYMBOLSB } /* miscmathsymbolsb */, - { 40, 1892, 0, 5, 0, PL_CASED } /* cased */, - { 3, 8096, 7104, 4, 8, PL_ARMN } /* scx=armenian */, - { 4, 7459, 7597, 3, 7, PL_SHAW } /* sc=shavian */, - { 1676, 2636, 0, 12, 0, PL_MONGOLIANSUP } /* mongoliansup */, - { 3109, 892, 7997, 17, 4, PL_VS } /* variationselector=yes */, - { 0, 7478, 8529, 3, 3, PL_SYRC } /* issyrc */, - { 145, 8344, 0, 3, 1, PL_JT__U } /* jt=u */, - { 0, 2229, 218, 16, 2, PL_PE } /* generalcategory=pe */, - { 0, 21, 6989, 2, 9, PL_INNEWTAILUE } /* innewtailue */, - { 664, 21, 4883, 2, 14, PL_LATINEXTE } /* inlatinextendede */, - { 0, 6706, 8152, 10, 4, PL_IN__10 } /* presentin=10.0 */, - { 21, 184, 3441, 2, 17, PL_LETTERLIKESYMBOLS } /* isletterlikesymbols */, - { 13, 6890, 8066, 4, 5, PL_INORIYA } /* blk=oriya */, - { 2823, 8021, 7951, 5, 5, PL_GREXT } /* grext=true */, - { 0, 8340, 727, 3, 3, PL_JG__DAL } /* jg=dal */, - { 2, 8931, 0, 2, 0, PL_L_AMP_ } /* l& */, - { 0, 1855, 7768, 21, 6, -PL_CWCM } /* changeswhencasemapped=false */, - { 1, 892, 0, 17, 0, PL_VS } /* variationselector */, - { 0, 1202, 7768, 3, 6, -PL_DEP } /* dep=false */, - { 75, 8340, 5885, 3, 12, PL_JG__MALAYALAMNYA } /* jg=malayalamnya */, - { 0, 8816, 8717, 3, 3, PL_NV__3_SLASH_4 } /* nv=3/4 */, - { 0, 7136, 2636, 6, 19, PL_MONGOLIANSUP } /* block=mongoliansupplement */, - { 0, 11, 3223, 3, 3, -PL_DIA } /* dia=no */, - { 0, 1426, 5297, 22, 13, PL_INSC__CONSONANTDEAD } /* indicsyllabiccategory=consonantdead */, - { 0, 2221, 3581, 3, 2, PL_GCB__T } /* hst=t */, - { 1, 7136, 3458, 6, 10, PL_INMANICHAEAN } /* block=manichaean */, - { 0, 8288, 68, 3, 3, PL_DT__SUP } /* dt=sup */, - { 0, 6297, 0, 4, 0, PL_CS } /* iscs */, - { 0, 7894, 7768, 6, 2, -PL_PATSYN } /* patsyn=f */, - { 0, 7136, 6296, 6, 11, PL_MISCSYMBOLS } /* block=miscsymbols */, - { 5, 8816, 8621, 3, 3, PL_NV__1_SLASH_6 } /* nv=1/6 */, - { 920, 7288, 8372, 7, 4, PL_SC__LATN } /* script=latn */, - { 0, 6890, 2107, 4, 21, PL_SINHALAARCHAICNUMBERS } /* blk=sinhalaarchaicnumbers */, - { 56, 8086, 7951, 5, 5, PL_QMARK } /* qmark=true */, - { 0, 6713, 8612, 3, 3, PL_IN__1_DOT_1 } /* in=1.1 */, - { 3, 2859, 7184, 18, 3, PL_DT__FRA } /* decompositiontype=fra */, - { 0, 122, 3581, 9, 2, PL_DIA } /* diacritic=t */, - { 2244, 7136, 6120, 6, 11, PL_DOMINO } /* block=dominotiles */, - { 0, 4314, 6065, 13, 11, PL_JG__AFRICANNOON } /* joininggroup=africannoon */, - { 0, 1658, 0, 22, 0, PL_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatideographssup */, - { 0, 4314, 4911, 13, 14, PL_JG__MANICHAEANAYIN } /* joininggroup=manichaeanayin */, - { 130, 6208, 3223, 5, 2, -PL_JOINC } /* joinc=n */, - { 0, 8432, 0, 4, 0, PL_NKO } /* nkoo */, - { 2070, 8096, 8424, 4, 4, PL_NBAT } /* scx=nbat */, - { 0, 8096, 8524, 4, 4, PL_SHRD } /* scx=shrd */, - { 1, 5284, 0, 13, 0, PL_CI } /* caseignorable */, - { 4, 3129, 2531, 17, 4, PL_MULT } /* scriptextensions=mult */, - { 0, 1206, 8107, 3, 4, PL_INTAILE } /* intaile */, - { 3, 4542, 1909, 3, 8, PL_LT } /* istitlecase */, - { 0, 7288, 3754, 7, 7, PL_SC__LINB } /* script=linearb */, - { 9, 8011, 8939, 3, 2, PL_ZP } /* gc=zp */, - { 10, 8432, 0, 3, 0, PL_NKO } /* nko */, - { 0, 5544, 8915, 13, 2, PL_NV__48 } /* numericvalue=48 */, - { 0, 5544, 8164, 13, 2, PL_NV__15 } /* numericvalue=15 */, - { 0, 6210, 3357, 3, 16, PL_CYRILLICEXTC } /* incyrillicextendedc */, - { 3, 8056, 0, 5, 0, PL_NSHU } /* nushu */, - { 4768, 8240, 5621, 3, 12, PL_BC__AL } /* bc=arabicletter */, - { 0, 7136, 8388, 6, 4, PL_LISU } /* block=lisu */, - { 84, 1834, 3223, 21, 2, -PL_CWCF } /* changeswhencasefolded=n */, - { 4004, 5192, 2270, 3, 19, PL_PHLI } /* isinscriptionalpahlavi */, - { 0, 7380, 7702, 7, 2, PL_CCC__20 } /* ccc=ccc20 */, - { 0, 8376, 5107, 3, 14, PL_LB__PO } /* lb=postfixnumeric */, - { 0, 974, 8669, 24, 3, PL_CCC__202 } /* canonicalcombiningclass=202 */, - { 51, 974, 8645, 27, 3, PL_CCC__129 } /* canonicalcombiningclass=ccc129 */, - { 1225, 8816, 8666, 3, 3, PL_NV__2_SLASH_5 } /* nv=2/5 */, - { 653, 7168, 7997, 8, 2, PL_EXT } /* extender=y */, - { 205, 5657, 7768, 12, 2, -PL_BIDIM } /* bidimirrored=f */, - { 2067, 8288, 1224, 3, 3, PL_DT__SUB } /* dt=sub */, - { 4, 8372, 0, 4, 0, PL_LATN } /* latn */, - { 3077, 8376, 7695, 3, 7, PL_LB__ZW } /* lb=zwspace */, - { 0, 5544, 7750, 13, 5, PL_NV__80000 } /* numericvalue=80000 */, - { 1552, 5134, 8078, 4, 3, PL_PATWS } /* ispatws */, - { 0, 7459, 6881, 3, 9, PL_BHKS } /* sc=bhaiksuki */, - { 584, 4542, 7321, 3, 7, PL_TFNG } /* istifinagh */, - { 130, 6890, 849, 4, 10, PL_PUA } /* blk=privateuse */, - { 162, 6263, 4524, 10, 15, PL_LB__OP } /* linebreak=openpunctuation */, - { 603, 1918, 3223, 21, 3, -PL_CWU } /* changeswhenuppercased=no */, - { 10, 6890, 78, 4, 35, PL_ARABICMATH } /* blk=arabicmathematicalalphabeticsymbols */, - { 0, 119, 7811, 3, 5, PL_INGOTHIC } /* ingothic */, - { 1, 3129, 2967, 17, 4, PL_GEOR } /* scriptextensions=geor */, - { 307, 1202, 3223, 3, 2, -PL_DEP } /* dep=n */, - { 0, 5427, 0, 9, 0, PL_MLYM } /* malayalam */, - { 6, 8428, 0, 4, 0, PL_NEWA } /* newa */, - { 2, 8096, 8468, 4, 4, PL_MIAO } /* scx=plrd */, - { 78, 2269, 0, 20, 0, PL_PHLI } /* inscriptionalpahlavi */, - { 4, 184, 7443, 2, 7, PL_GRAN } /* isgrantha */, - { 2, 6210, 5706, 3, 11, PL_CYRILLICEXTC } /* incyrillicextc */, - { 12, 5250, 7951, 8, 5, PL_XPOSIXXDIGIT } /* hexdigit=true */, - { 1539, 7457, 7688, 5, 7, PL_INSC__VISARGA } /* insc=visarga */, - { 1301, 7224, 5253, 8, 5, PL_XPOSIXDIGIT } /* isxposixdigit */, - { 0, 6890, 3067, 4, 8, PL_DINGBATS } /* blk=dingbats */, - { 2595, 1206, 1813, 3, 21, PL_TRANSPORTANDMAP } /* intransportandmapsymbols */, - { 13, 21, 2150, 3, 19, PL_INANATOLIANHIEROGLYPHS } /* inanatolianhieroglyphs */, - { 1105, 4542, 3148, 3, 10, PL_TAIXUANJING } /* istaixuanjing */, - { 1414, 3373, 0, 16, 0, PL_EA__H } /* eastasianwidth=h */, - { 585, 7136, 3611, 7, 7, PL_INBOPOMOFO } /* block=bopomofo */, - { 3, 7288, 8568, 7, 4, PL_VAI } /* script=vaii */, - { 49, 8196, 8861, 4, 3, PL_AGE__4_DOT_1 } /* age=v41 */, - { 3, 6713, 7744, 3, 1, PL_IN__7 } /* in=7 */, - { 0, 7152, 0, 8, 0, PL_DUPL } /* duployan */, - { 7, 7689, 97, 3, 4, PL_XPOSIXALPHA } /* isalpha */, - { 124, 7288, 2895, 7, 8, PL_ETHI } /* script=ethiopic */, - { 2386, 5645, 2579, 10, 19, PL_BC__LRO } /* bidiclass=lefttorightoverride */, - { 1088, 7136, 2895, 6, 18, PL_ETHIOPICSUP } /* block=ethiopicsupplement */, - { 2, 1746, 5772, 21, 5, PL_WB__EB } /* graphemeclusterbreak=ebase */, - { 9, 7136, 4813, 6, 7, PL_KANASUP } /* block=kanasup */, - { 0, 184, 3610, 2, 16, PL_BOPOMOFOEXT } /* isbopomofoextended */, - { 3, 1746, 5753, 21, 12, PL_WB__GAZ } /* graphemeclusterbreak=glueafterzwj */, - { 0, 2065, 7768, 21, 6, -PL_NCHAR } /* noncharactercodepoint=false */, - { 0, 1346, 4774, 5, 11, PL_INGREEK } /* ingreekandcoptic */, - { 0, 3129, 6676, 17, 10, PL_XPEO } /* scriptextensions=oldpersian */, - { 0, 2108, 3723, 3, 15, PL_HIGHPUSURROGATES } /* inhighpusurrogates */, - { 934, 1892, 3223, 5, 2, -PL_CASED } /* cased=n */, - { 4292, 7459, 7061, 3, 9, PL_SAMR } /* sc=samaritan */, - { 32, 7288, 4644, 7, 15, PL_ZANB } /* script=zanabazarsquare */, - { 0, 8508, 7877, 4, 5, PL_LYCI } /* sc=lycian */, - { 22, 184, 5706, 3, 11, PL_CYRILLICEXTC } /* iscyrillicextc */, - { 0, 5284, 7768, 13, 2, -PL_CI } /* caseignorable=f */, - { 12, 7136, 510, 6, 30, PL_CJKEXTA } /* block=cjkunifiedideographsextensiona */, - { 0, 8076, 7768, 5, 6, -PL_PATWS } /* patws=false */, - { 0, 1417, 25, 9, 1, PL_S } /* category=s */, - { 2714, 7136, 6484, 6, 3, PL_INIDC } /* block=idc */, - { 1157, 7136, 316, 6, 33, PL_MISCMATHSYMBOLSB } /* block=miscellaneousmathematicalsymbolsb */, - { 3411, 974, 8187, 27, 2, PL_CCC__27 } /* canonicalcombiningclass=ccc27 */, - { 32, 7227, 3521, 5, 5, PL_POSIXSPACE } /* posixspace */, - { 0, 7136, 5945, 6, 12, PL_MATHALPHANUM } /* block=mathalphanum */, - { 7, 7136, 447, 6, 32, PL_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbolsandpunctuation */, - { 0, 540, 0, 30, 0, PL_CJKEXTB } /* cjkunifiedideographsextensionb */, - { 606, 7288, 6406, 7, 4, PL_SORA } /* script=sora */, - { 4224, 4630, 2883, 3, 3, PL_UGAR } /* isugar */, - { 0, 8096, 7248, 4, 8, PL_JAVA } /* scx=javanese */, - { 1, 6890, 5945, 4, 12, PL_MATHALPHANUM } /* blk=mathalphanum */, - { 176, 4757, 3223, 14, 2, -PL_GREXT } /* graphemeextend=n */, - { 1564, 1202, 0, 3, 0, PL_DEP } /* dep */, - { 0, 21, 7248, 2, 8, PL_INJAVANESE } /* injavanese */, - { 7, 6736, 0, 4, 0, PL_SAUR } /* saur */, - { 32, 8572, 5729, 3, 12, PL_WB__EX } /* wb=extendnumlet */, - { 0, 8011, 5083, 4, 10, PL_MC } /* gc=spacingmark */, - { 2661, 7288, 7025, 7, 9, PL_ORKH } /* script=oldturkic */, - { 0, 8816, 7714, 3, 5, PL_NV__30000 } /* nv=30000 */, - { 0, 6890, 3738, 4, 6, PL_LATIN1 } /* blk=latin1 */, - { 2, 7478, 2713, 3, 18, PL_SUPARROWSB } /* issupplementalarrowsb */, - { 33, 6210, 1283, 3, 23, PL_CJKSYMBOLS } /* incjksymbolsandpunctuation */, - { 0, 2229, 1797, 16, 14, PL_LM } /* generalcategory=modifierletter */, - { 906, 1001, 0, 27, 0, PL_ENCLOSEDCJK } /* enclosedcjklettersandmonths */, - { 0, 3129, 8200, 17, 4, PL_AGHB } /* scriptextensions=aghb */, - { 0, 6756, 3581, 10, 2, PL_SD } /* softdotted=t */, - { 0, 7288, 8320, 7, 4, PL_HLUW } /* script=hluw */, - { 0, 7459, 2967, 3, 8, PL_SC__GEOR } /* sc=georgian */, - { 0, 6890, 2636, 4, 12, PL_MONGOLIANSUP } /* blk=mongoliansup */, - { 7, 6890, 2389, 4, 19, PL_ANCIENTGREEKNUMBERS } /* blk=ancientgreeknumbers */, - { 1394, 1426, 1330, 22, 9, PL_INSC__CONSONANT } /* indicsyllabiccategory=consonant */, - { 2048, 2712, 0, 19, 0, PL_SUPARROWSB } /* supplementalarrowsb */, - { 4, 21, 6241, 2, 11, PL_KATAKANAEXT } /* inkatakanaext */, - { 0, 184, 5388, 2, 13, PL_KANAEXTA } /* iskanaextendeda */, - { 64, 2229, 3690, 16, 16, PL_PF } /* generalcategory=finalpunctuation */, - { 0, 7288, 7555, 7, 7, PL_OLCK } /* script=olchiki */, - { 0, 7894, 7997, 6, 4, PL_PATSYN } /* patsyn=yes */, - { 1, 6890, 3390, 4, 17, PL_ETHIOPICEXTA } /* blk=ethiopicextendeda */, - { 351, 3373, 7888, 15, 6, PL_EA__NA } /* eastasianwidth=narrow */, - { 4, 8340, 87, 3, 2, PL_JG__HE } /* jg=he */, - { 21, 3129, 1111, 17, 4, PL_KANA } /* scriptextensions=kana */, - { 545, 3129, 8071, 17, 5, PL_OSGE } /* scriptextensions=osage */, - { 2, 1417, 47, 9, 1, PL_M } /* category=m */, - { 226, 7288, 8556, 7, 4, PL_THAI } /* script=thai */, - { 0, 8260, 0, 4, 0, PL_CAKM } /* cakm */, - { 6864, 6713, 8657, 3, 3, PL_IN__2 } /* in=2.0 */, - { 2188, 6706, 8849, 10, 3, PL_IN__3 } /* presentin=v30 */, - { 0, 8066, 0, 5, 0, PL_ORYA } /* oriya */, - { 520, 7876, 0, 4, 0, PL_LYCI } /* lyci */, - { 12, 7380, 8228, 4, 4, PL_CCC__133 } /* ccc=atbl */, - { 321, 5401, 0, 13, 0, PL_ZL } /* lineseparator */, - { 5897, 2859, 2369, 18, 8, PL_DT__VERT } /* decompositiontype=vertical */, - { 3, 184, 720, 2, 30, PL_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumericsupplement */, - { 4182, 21, 7256, 2, 8, PL_KANAEXTA } /* inkanaexta */, - { 0, 6263, 7695, 10, 7, PL_LB__ZW } /* linebreak=zwspace */, - { 0, 6263, 6087, 10, 11, PL_LB__BB } /* linebreak=breakbefore */, - { 2459, 2750, 7768, 19, 2, -PL_TERM } /* terminalpunctuation=f */, - { 3875, 7459, 7991, 3, 5, PL_SC__BUHD } /* sc=buhid */, - { 5, 7136, 1498, 7, 13, PL_BYZANTINEMUSIC } /* block=byzantinemusic */, - { 0, 7136, 6626, 6, 10, PL_INKHAROSHTHI } /* block=kharoshthi */, - { 3113, 8016, 7160, 4, 8, PL_WB__EBG } /* gcb=ebasegaz */, - { 0, 3129, 7520, 17, 4, PL_MARC } /* scriptextensions=marc */, - { 1, 2967, 0, 4, 0, PL_GEOR } /* geor */, - { 0, 7288, 7443, 7, 7, PL_SC__GRAN } /* script=grantha */, - { 4, 3424, 3223, 17, 3, -PL_IDSB } /* idsbinaryoperator=no */, - { 8, 8340, 5894, 3, 3, PL_JG__NYA } /* jg=nya */, - { 2824, 1448, 2705, 5, 7, PL_SUPARROWSA } /* insuparrowsa */, - { 32, 6756, 7768, 10, 2, -PL_SD } /* softdotted=f */, - { 0, 7380, 8685, 4, 2, PL_CCC__24 } /* ccc=24 */, - { 0, 7689, 1236, 4, 22, PL_ARABICPFA } /* isarabicpresentationformsa */, - { 0, 7380, 8696, 4, 3, PL_CCC__AR } /* ccc=232 */, - { 0, 3424, 3223, 4, 3, -PL_IDSB } /* idsb=no */, - { 0, 5544, 7714, 13, 5, PL_NV__30000 } /* numericvalue=30000 */, - { 0, 2229, 1886, 16, 2, PL_NL } /* generalcategory=nl */, - { 0, 1503, 751, 3, 21, PL_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsup */, - { 0, 7380, 5349, 4, 13, PL_CCC__IS } /* ccc=iotasubscript */, - { 225, 3882, 0, 16, 0, PL_MYANMAREXTA } /* myanmarextendeda */, - { 6178, 6483, 7951, 4, 5, PL_XIDC } /* xidc=true */, - { 2484, 34, 7997, 3, 4, PL_EXT } /* ext=yes */, - { 1, 96, 3581, 10, 2, PL_XPOSIXALPHA } /* alphabetic=t */, - { 768, 7288, 2409, 8, 3, PL_BRAH } /* script=brah */, - { 0, 184, 11, 2, 2, PL_DI } /* isdi */, - { 7, 8096, 7520, 4, 4, PL_MARC } /* scx=marc */, - { 0, 5645, 0, 11, 0, PL_BC__B } /* bidiclass=b */, - { 4, 8508, 4630, 4, 3, PL_LISU } /* sc=lisu */, - { 7, 7380, 7744, 4, 1, PL_CCC__7 } /* ccc=7 */, - { 1, 7136, 0, 6, 42, PL_UCASEXT } /* block=unifiedcanadianaboriginalsyllabicsextended */, - { 9, 1790, 0, 22, 0, PL_MODIFIERLETTERS } /* spacingmodifierletters */, - { 15, 8021, 3581, 5, 2, PL_GREXT } /* grext=t */, - { 320, 184, 1982, 3, 10, PL_CYRILLICSUP } /* iscyrillicsup */, - { 7211, 974, 3254, 24, 17, PL_CCC__133 } /* canonicalcombiningclass=attachedbelowleft */, - { 2082, 6890, 6296, 4, 11, PL_MISCSYMBOLS } /* blk=miscsymbols */, - { 74, 8096, 7248, 4, 4, PL_JAVA } /* scx=java */, - { 5236, 27, 0, 2, 0, PL_LL } /* ll */, - { 4, 2134, 3223, 3, 2, -PL_XPOSIXXDIGIT } /* hex=n */, - { 0, 8376, 5789, 3, 12, PL_LB__IS } /* lb=infixnumeric */, - { 5204, 1892, 7997, 5, 4, PL_CASED } /* cased=yes */, - { 1290, 2859, 7888, 18, 6, PL_DT__NAR } /* decompositiontype=narrow */, - { 0, 8777, 7768, 3, 6, -PL_CWL } /* cwl=false */, - { 1, 7288, 1589, 7, 5, PL_SC__LATN } /* script=latin */, - { 0, 6756, 7951, 10, 5, PL_SD } /* softdotted=true */, - { 8, 6890, 720, 4, 30, PL_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumericsupplement */, - { 1, 7136, 2107, 6, 21, PL_SINHALAARCHAICNUMBERS } /* block=sinhalaarchaicnumbers */, - { 0, 6472, 2284, 10, 2, PL_LB__HL } /* wordbreak=hl */, - { 4, 3114, 1, 3, 41, PL_UCASEXT } /* inunifiedcanadianaboriginalsyllabicsextended */, - { 0, 184, 114, 3, 34, PL_DIACRITICALSFORSYMBOLS } /* iscombiningdiacriticalmarksforsymbols */, - { 0, 4542, 4011, 3, 15, PL_TANGUTCOMPONENTS } /* istangutcomponents */, - { 0, 974, 23, 24, 2, PL_CCC__AL } /* canonicalcombiningclass=al */, - { 0, 7288, 994, 8, 3, PL_BASS } /* script=bass */, - { 0, 8096, 2877, 4, 4, PL_DEVA } /* scx=deva */, - { 0, 8096, 6373, 4, 11, PL_HMNG } /* scx=pahawhhmong */, - { 4836, 7136, 7408, 6, 7, PL_CJKEXTD } /* block=cjkextd */, - { 10, 7459, 5777, 3, 6, PL_HEBR } /* sc=hebrew */, - { 1144, 184, 8273, 3, 3, PL_CWCF } /* iscwcf */, - { 1, 1746, 125, 21, 2, PL_LB__CR } /* graphemeclusterbreak=cr */, - { 2132, 3129, 7019, 17, 4, PL_PERM } /* scriptextensions=perm */, - { 0, 84, 3223, 4, 2, -PL_MATH } /* math=n */, - { 3, 184, 7810, 2, 4, PL_GOTH } /* isgoth */, - { 0, 7380, 8633, 7, 3, PL_CCC__103 } /* ccc=ccc103 */, - { 1, 6890, 1768, 4, 22, PL_MISCTECHNICAL } /* blk=miscellaneoustechnical */, - { 801, 7478, 6777, 3, 9, PL_SUPARROWSB } /* issuparrowsb */, - { 2049, 7043, 0, 9, 0, PL_PAUC } /* paucinhau */, - { 8, 8021, 7768, 5, 2, -PL_GREXT } /* grext=f */, - { 3472, 8548, 0, 4, 0, PL_TFNG } /* tfng */, - { 0, 8572, 6962, 3, 9, PL_WB__ML } /* wb=midletter */, - { 1, 6263, 929, 10, 2, PL_LB__CP } /* linebreak=cp */, - { 57, 184, 2788, 3, 17, PL_CHEROKEESUP } /* ischerokeesupplement */, - { 6591, 6263, 496, 10, 2, PL_LB__NU } /* linebreak=nu */, - { 1984, 3129, 5957, 17, 4, PL_MEND } /* scriptextensions=mend */, - { 2, 7136, 6766, 6, 10, PL_SUPARROWSA } /* block=suparrowsa */, - { 2, 3129, 7144, 17, 4, PL_BUGI } /* scriptextensions=bugi */, - { 1, 3129, 8552, 17, 4, PL_TGLG } /* scriptextensions=tglg */, - { 20, 7136, 5717, 6, 12, PL_ETHIOPICEXTA } /* block=ethiopicexta */, - { 1285, 8096, 8604, 4, 4, PL_ZYYY } /* scx=zyyy */, - { 8, 7459, 8544, 3, 4, PL_TAVT } /* sc=tavt */, - { 0, 8121, 7768, 5, 2, -PL_UIDEO } /* uideo=f */, - { 135, 11, 7768, 3, 6, -PL_DIA } /* dia=false */, - { 100, 3129, 2877, 17, 4, PL_DEVA } /* scriptextensions=deva */, - { 0, 7689, 804, 4, 4, PL_ARROWS } /* isarrows */, - { 377, 7478, 17, 3, 1, PL_SO } /* isso */, - { 4933, 8196, 8843, 4, 3, PL_AGE__2 } /* age=v20 */, - { 29, 8096, 8356, 4, 4, PL_KNDA } /* scx=knda */, - { 4185, 7288, 8432, 7, 4, PL_NKO } /* script=nkoo */, - { 1, 8196, 8756, 4, 3, PL_AGE__6_DOT_3 } /* age=6.3 */, - { 5, 6484, 7997, 10, 4, PL_IDC } /* idcontinue=yes */, - { 4384, 7136, 7208, 6, 8, PL_INHIRAGANA } /* block=hiragana */, - { 0, 7689, 948, 3, 16, PL_ANCIENTGREEKMUSIC } /* isancientgreekmusic */, - { 3, 184, 183, 2, 34, PL_MISCPICTOGRAPHS } /* ismiscellaneoussymbolsandpictographs */, - { 15, 11, 0, 3, 0, PL_DIA } /* dia */, - { 0, 8096, 6980, 4, 9, PL_NBAT } /* scx=nabataean */, - { 0, 3129, 7450, 17, 7, PL_HANO } /* scriptextensions=hanunoo */, - { 0, 7380, 8681, 4, 3, PL_CCC__BR } /* ccc=222 */, - { 0, 8096, 7506, 4, 7, PL_LINA } /* scx=lineara */, - { 1, 6263, 4194, 10, 15, PL_LB__CB } /* linebreak=contingentbreak */, - { 0, 6219, 3223, 11, 2, -PL_JOINC } /* joincontrol=n */, - { 14, 217, 2522, 6, 19, PL__PERL_FOLDS_TO_MULTI_CHAR } /* _perl_folds_to_multi_char */, - { 5481, 7459, 8252, 3, 4, PL_SC__BUHD } /* sc=buhd */, - { 0, 2990, 6874, 4, 7, PL_ARABICPFB } /* inarabicpfb */, - { 0, 7459, 7810, 3, 6, PL_GOTH } /* sc=gothic */, - { 0, 7380, 8655, 4, 2, PL_CCC__33 } /* ccc=33 */, - { 103, 3521, 3223, 5, 3, -PL_XPOSIXSPACE } /* space=no */, - { 0, 21, 7852, 2, 6, PL_KANBUN } /* inkanbun */, - { 2239, 3129, 7876, 17, 6, PL_LYCI } /* scriptextensions=lycian */, - { 0, 6263, 415, 10, 11, PL_LB__ID } /* linebreak=ideographic */ + { 2, 184, 6948, 2, 10, UNI_MISCARROWS } /* ismiscarrows */, + { 1, 3671, 6027, 17, 5, UNI_KHMR } /* scriptextensions=khmer */, + { 0, 6472, 3470, 5, 14, UNI_INCAUCASIANALBANIAN } /* incaucasianalbanian */, + { 10, 9365, 2608, 4, 19, UNI_EGYP } /* scx=egyptianhieroglyphs */, + { 1, 9113, 7540, 4, 2, UNI_CCC__20 } /* ccc=20 */, + { 2, 3671, 4672, 17, 15, UNI_SARB } /* scriptextensions=oldsoutharabian */, + { 0, 6885, 1459, 3, 23, UNI_HIGHPUSURROGATES } /* ishighprivateusesurrogates */, + { 16, 5325, 0, 14, 0, UNI_qmark_values_index } /* quotationmark= */, + { 1, 9629, 8324, 3, 7, UNI_LB__XX } /* lb=unknown */, + { 4, 5760, 8981, 13, 4, UNI_NV__1_SLASH_40 } /* numericvalue=1/40 */, + { 6, 9093, 5907, 4, 12, UNI_ETHIOPICEXTA } /* blk=ethiopicexta */, + { 1, 1911, 3788, 22, 16, UNI_INSC__CANTILLATIONMARK } /* indicsyllabiccategory=cantillationmark */, + { 0, 8424, 5799, 6, 12, UNI_ALPHABETICPF } /* block=alphabeticpf */, + { 12, 3671, 8679, 17, 5, UNI_ADLM } /* scriptextensions=adlam */, + { 0, 9775, 0, 2, 0, UNI_ZL } /* zl */, + { 1, 42, 0, 3, 0, UNI_CJK } /* cjk */, + { 0, 5339, 49, 14, 2, UNI_SB__AT } /* sentencebreak=at */, + { 0, 5339, 8198, 14, 7, UNI_SB__LE } /* sentencebreak=oletter */, + { 1, 9093, 1618, 4, 4, UNI_JAMO } /* blk=jamo */, + { 1, 3671, 6051, 17, 4, UNI_MAHJ } /* scriptextensions=mahj */, + { 4, 8424, 9261, 6, 3, UNI_INMRO } /* block=mro */, + { 1, 132, 0, 2, 0, UNI_LM } /* lm */, + { 0, 3671, 4220, 17, 6, UNI_TANG } /* scriptextensions=tangut */, + { 0, 9623, 5669, 3, 13, UNI_JG__MANICHAEANONE } /* jg=manichaeanone */, + { 0, 9093, 5955, 4, 12, UNI_INGUNJALAGONDI } /* blk=gunjalagondi */, + { 6, 9903, 7128, 6, 4, UNI_XPOSIXWORD } /* xposixword */, + { 4, 2836, 0, 9, 0, UNI_SUND } /* sundanese */, + { 0, 9623, 1456, 3, 3, UNI_JG__HAH } /* jg=hah */, + { 0, 8424, 43, 7, 25, UNI_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatibilityideographs */, + { 7, 8871, 1164, 3, 2, UNI_LB__LF } /* sb=lf */, + { 1, 184, 6646, 2, 11, UNI_HMNG } /* ispahawhhmong */, + { 2, 3671, 9217, 17, 4, UNI_LAO } /* scriptextensions=laoo */, + { 3, 3996, 0, 16, 0, UNI_LINEARBSYLLABARY } /* linearbsyllabary */, + { 4, 184, 5734, 2, 13, UNI_MISCTECHNICAL } /* ismisctechnical */, + { 3, 8954, 9734, 5, 3, UNI_XIDC } /* xidc=yes */, + { 1, 1154, 0, 3, 0, UNI_DEP } /* dep */, + { 3, 184, 779, 2, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsup */, + { 0, 3671, 5967, 17, 6, UNI_HEBR } /* scriptextensions=hebrew */, + { 34, 9429, 0, 4, 0, UNI_TIBT } /* tibt */, + { 8, 7025, 9719, 3, 3, UNI_IN__8 } /* in=v80 */, + { 1, 8634, 9734, 6, 3, UNI_UIDEO } /* uideo=yes */, + { 1, 8520, 995, 6, 2, -UNI_JOINC } /* joinc=no */, + { 3, 2211, 0, 21, 0, UNI_SINHALAARCHAICNUMBERS } /* sinhalaarchaicnumbers */, + { 0, 8879, 2479, 5, 6, UNI_INPC__BOTTOM } /* inpc=bottom */, + { 1, 184, 1057, 2, 26, UNI_PCM } /* isprependedconcatenationmark */, + { 0, 6918, 1156, 10, 2, UNI_LB__PO } /* linebreak=po */, + { 0, 8886, 9181, 3, 4, UNI_HLUW } /* sc=hluw */, + { 2, 9365, 7788, 4, 8, UNI_BALI } /* scx=balinese */, + { 1, 9365, 9285, 4, 3, UNI_NKO } /* scx=nko */, + { 0, 4642, 0, 15, 0, UNI_nfkdqc_values_index } /* nfkdquickcheck= */, + { 0, 184, 43, 3, 25, UNI_CJKCOMPATIDEOGRAPHS } /* iscjkcompatibilityideographs */, + { 3, 2148, 2875, 3, 18, UNI_SUPARROWSB } /* insupplementalarrowsb */, + { 1, 1691, 1, 22, 1, UNI_BPT__N } /* bidipairedbrackettype=n */, + { 1, 184, 8079, 2, 7, UNI_GRAN } /* isgrantha */, + { 0, 7128, 1188, 10, 8, UNI_WB__KA } /* wordbreak=katakana */, + { 1, 9093, 0, 4, 34, UNI_UCAS } /* blk=unifiedcanadianaboriginalsyllabics */, + { 1, 3671, 689, 17, 9, UNI_XSUX } /* scriptextensions=cuneiform */, + { 3, 4705, 9430, 3, 3, UNI_TIBT } /* istibt */, + { 0, 1911, 2313, 22, 20, UNI_INSC__CONSONANTWITHSTACKER } /* indicsyllabiccategory=consonantwithstacker */, + { 8, 8886, 7239, 3, 9, UNI_SC__QAAI } /* sc=inherited */, + { 3, 8424, 4672, 6, 15, UNI_SARB } /* block=oldsoutharabian */, + { 0, 1497, 3228, 10, 8, UNI_Z } /* category=separator */, + { 0, 8892, 0, 4, 0, UNI_PHLI } /* phli */, + { 0, 7420, 26, 8, 1, UNI_IDS } /* idstart=y */, + { 1, 2930, 0, 18, 0, UNI_CHEROKEESUP } /* cherokeesupplement */, + { 2, 8424, 510, 7, 19, UNI_CJK } /* block=cjkunifiedideographs */, + { 1, 6003, 0, 11, 0, UNI_JOINC } /* joincontrol */, + { 1, 7025, 9581, 3, 3, UNI_IN__7 } /* in=7.0 */, + { 1, 6918, 9759, 10, 2, UNI_LB__H3 } /* linebreak=h3 */, + { 0, 8424, 8205, 6, 7, UNI_INOSMANYA } /* block=osmanya */, + { 0, 5760, 9747, 13, 2, UNI_NV__47 } /* numericvalue=47 */, + { 1, 6828, 2190, 10, 21, UNI_BC__PDI } /* bidiclass=popdirectionalisolate */, + { 2, 8514, 0, 4, 0, UNI_HATR } /* hatr */, + { 1, 9647, 8358, 3, 3, UNI_NV__300 } /* nv=300 */, + { 1, 8282, 0, 7, 0, UNI_TGLG } /* tagalog */, + { 4, 8886, 8430, 3, 4, UNI_CARI } /* sc=cari */, + { 2, 9605, 2493, 3, 4, UNI_DT__VERT } /* dt=vert */, + { 1, 5734, 0, 13, 0, UNI_MISCTECHNICAL } /* misctechnical */, + { 4, 8879, 6998, 5, 10, UNI_INPC__OVERSTRUCK } /* inpc=overstruck */, + { 3, 3671, 9053, 17, 4, UNI_AGHB } /* scriptextensions=aghb */, + { 2, 3236, 9734, 18, 3, UNI__PERL_PATWS } /* patternwhitespace=yes */, + { 0, 9608, 1162, 3, 9, UNI_EA__H } /* ea=halfwidth */, + { 1, 3671, 5955, 17, 12, UNI_GONG } /* scriptextensions=gunjalagondi */, + { 0, 184, 8699, 2, 5, UNI_BATK } /* isbatak */, + { 0, 7420, 0, 8, 0, UNI_ids_values_index } /* idstart= */, + { 0, 1362, 5409, 24, 2, UNI_CCC__10 } /* canonicalcombiningclass=10 */, + { 0, 8424, 6991, 6, 7, UNI_INSOGDIAN } /* block=sogdian */, + { 0, 8233, 689, 7, 9, UNI_XSUX } /* script=cuneiform */, + { 1, 9093, 1338, 4, 24, UNI_ARABICPFB } /* blk=arabicpresentationformsb */, + { 1, 1713, 26, 22, 1, UNI_CWCF } /* changeswhencasefolded=y */, + { 5, 184, 74, 2, 2, UNI_ME } /* isme */, + { 1, 9620, 24, 3, 1, UNI_L } /* gc=l */, + { 1, 4705, 2022, 3, 21, UNI_TRANSPORTANDMAP } /* istransportandmapsymbols */, + { 4, 7025, 9701, 3, 3, UNI_IN__5_DOT_2 } /* in=v52 */, + { 1, 2106, 406, 21, 7, UNI_GCB__CN } /* graphemeclusterbreak=control */, + { 1, 8233, 7788, 7, 8, UNI_BALI } /* script=balinese */, + { 0, 9909, 9322, 3, 3, UNI_PHNX } /* isphnx */, + { 0, 8886, 8502, 3, 4, UNI_GOTH } /* sc=goth */, + { 0, 3671, 1599, 17, 6, UNI_HANG } /* scriptextensions=hangul */, + { 2, 2148, 8269, 3, 6, UNI_SUPPUAA } /* insuppuaa */, + { 2, 9365, 9109, 4, 4, UNI_CANS } /* scx=cans */, + { 0, 8233, 8128, 7, 7, UNI_MAKA } /* script=makasar */, + { 0, 1497, 5487, 9, 13, UNI_XPOSIXDIGIT } /* category=decimalnumber */, + { 5, 184, 1154, 2, 3, UNI_DEP } /* isdep */, + { 1, 184, 7, 3, 1, UNI_XPOSIXCNTRL } /* iscc */, + { 6, 8424, 43, 7, 8, UNI_CJKCOMPAT } /* block=cjkcompat */, + { 10, 3868, 406, 16, 7, UNI_XPOSIXCNTRL } /* generalcategory=control */, + { 1, 8233, 9161, 7, 4, UNI_SC__GONM } /* script=gonm */, + { 3, 5760, 7571, 13, 2, UNI_NV__33 } /* numericvalue=33 */, + { 1, 3671, 7892, 17, 4, UNI_JAVA } /* scriptextensions=java */, + { 3, 5269, 3, 14, 1, -UNI_PATSYN } /* patternsyntax=f */, + { 0, 8886, 7844, 3, 8, UNI_SC__GUJR } /* sc=gujarati */, + { 2, 8886, 9165, 3, 4, UNI_SC__GREK } /* sc=grek */, + { 0, 6005, 8010, 3, 6, UNI_CJKEXTA } /* incjkexta */, + { 0, 8424, 7275, 6, 9, UNI_LATINEXTD } /* block=latinextd */, + { 1, 4447, 66, 15, 1, UNI_EA__H } /* eastasianwidth=h */, + { 1, 5339, 7, 15, 1, UNI_SB__SC } /* sentencebreak=sc */, + { 0, 2684, 24, 19, 1, UNI_GCB__L } /* hangulsyllabletype=l */, + { 1, 8163, 17, 8, 1, UNI_NFKCQC__N } /* nfkcqc=no */, + { 0, 8886, 9425, 3, 4, UNI_THAI } /* sc=thai */, + { 2, 8424, 7374, 6, 9, UNI_INSAMARITAN } /* block=samaritan */, + { 2, 8332, 7196, 4, 7, UNI_ARABICPFB } /* isarabicpfb */, + { 1, 6015, 0, 12, 0, UNI_jt_values_index } /* joiningtype= */, + { 3, 9623, 5931, 3, 12, UNI_JG__FINALSEMKATH } /* jg=finalsemkath */, + { 0, 9647, 8981, 3, 3, UNI_NV__1_SLASH_4 } /* nv=1/4 */, + { 2, 9365, 5955, 4, 12, UNI_GONG } /* scx=gunjalagondi */, + { 8, 8332, 3758, 4, 14, UNI_ARABICSUP } /* isarabicsupplement */, + { 0, 9659, 995, 3, 2, -UNI_RI } /* ri=no */, + { 1, 21, 8568, 2, 6, UNI_INLYDIAN } /* inlydian */, + { 4, 184, 8065, 2, 7, UNI_ELBA } /* iselbasan */, + { 1, 9647, 7508, 3, 8, UNI_NV__1_SLASH_5 } /* nv=2.00e-01 */, + { 5, 9093, 4975, 4, 7, UNI_KANASUP } /* blk=kanasup */, + { 0, 8233, 9065, 7, 4, UNI_ARMI } /* script=armi */, + { 3, 1136, 0, 26, 0, UNI_di_values_index } /* defaultignorablecodepoint= */, + { 3, 8499, 0, 2, 0, UNI_CF } /* cf */, + { 4, 3868, 0, 16, 0, UNI_gc_values_index } /* generalcategory= */, + { 9, 8240, 0, 7, 0, UNI_SHRD } /* sharada */, + { 1, 9093, 2589, 4, 11, UNI_COUNTINGROD } /* blk=countingrod */, + { 0, 6949, 4851, 4, 11, UNI_CI } /* iscaseignorable */, + { 1, 184, 570, 3, 29, UNI_CJKEXTC } /* iscjkunifiedideographsextensionc */, + { 1, 8886, 9249, 3, 4, UNI_MERC } /* sc=merc */, + { 1, 21, 9058, 3, 3, UNI_INAHOM } /* inahom */, + { 7, 9153, 5346, 4, 2, UNI_WB__EB } /* gcb=eb */, + { 2, 8233, 6602, 7, 11, UNI_SC__NAND } /* script=nandinagari */, + { 0, 9647, 9741, 3, 2, UNI_NV__44 } /* nv=44 */, + { 0, 1801, 9734, 22, 3, UNI_CWU } /* changeswhenuppercased=yes */, + { 0, 3951, 2704, 3, 17, UNI_IDST } /* isidstrinaryoperator */, + { 0, 8424, 328, 6, 21, UNI_MATHOPERATORS } /* block=mathematicaloperators */, + { 4, 2204, 4141, 3, 15, UNI_PO } /* isotherpunctuation */, + { 1, 8684, 9433, 5, 4, UNI_POSIXXDIGIT } /* ahex=true */, + { 2, 8886, 8699, 3, 5, UNI_BATK } /* sc=batak */, + { 2, 1773, 0, 5, 0, UNI_CASED } /* cased */, + { 3, 184, 690, 3, 15, UNI_CUNEIFORMNUMBERS } /* iscuneiformnumbers */, + { 18, 7018, 9566, 10, 3, UNI_IN__5_DOT_2 } /* presentin=5.2 */, + { 2, 3868, 1532, 16, 1, UNI_Z } /* generalcategory=z */, + { 4, 9599, 26, 3, 1, UNI_CI } /* ci=y */, + { 0, 2212, 3933, 3, 15, UNI_HIGHPUSURROGATES } /* inhighpusurrogates */, + { 0, 2589, 0, 19, 0, UNI_COUNTINGROD } /* countingrodnumerals */, + { 1, 9365, 2532, 4, 4, UNI_BRAH } /* scx=brah */, + { 2, 8233, 8310, 7, 4, UNI_SC__TIRH } /* script=tirh */, + { 1, 3868, 5199, 16, 14, UNI_SK } /* generalcategory=modifiersymbol */, + { 0, 184, 5835, 2, 5, UNI_BIDIC } /* isbidic */, + { 8, 8886, 8254, 3, 7, UNI_SIDD } /* sc=siddham */, + { 1, 8844, 8864, 5, 5, -UNI_CWCF } /* cwcf=false */, + { 0, 184, 3164, 2, 9, UNI_LATINEXTA } /* islatinexta */, + { 2, 9093, 6978, 4, 10, UNI_INOLDPERSIAN } /* blk=oldpersian */, + { 26, 8233, 9189, 7, 4, UNI_HMNP } /* script=hmnp */, + { 4, 1773, 36, 6, 1, UNI_CASED } /* cased=t */, + { 0, 8424, 2232, 6, 21, UNI_YIJING } /* block=yijinghexagramsymbols */, + { 1, 9113, 7555, 4, 2, UNI_CCC__23 } /* ccc=23 */, + { 3, 9057, 0, 4, 0, UNI_AHOM } /* ahom */, + { 5, 8886, 8079, 3, 4, UNI_SC__GRAN } /* sc=gran */, + { 0, 7018, 9005, 10, 4, UNI_IN__12_DOT_1 } /* presentin=12.1 */, + { 1, 8886, 9053, 3, 4, UNI_AGHB } /* sc=aghb */, + { 0, 8886, 7332, 3, 4, UNI_ITAL } /* sc=ital */, + { 0, 184, 3772, 2, 8, UNI_BOPO } /* isbopomofo */, + { 0, 9779, 0, 2, 0, UNI_ZS } /* zs */, + { 1, 8233, 9225, 7, 4, UNI_SC__LINA } /* script=lina */, + { 1, 184, 47, 2, 1, UNI_M } /* ism */, + { 1, 3110, 0, 18, 0, UNI_GEORGIANSUP } /* georgiansupplement */, + { 0, 2532, 0, 6, 0, UNI_BRAH } /* brahmi */, + { 0, 3671, 6646, 17, 11, UNI_HMNG } /* scriptextensions=pahawhhmong */, + { 0, 8879, 7009, 3, 9, UNI_INPHOENICIAN } /* inphoenician */, + { 1, 184, 400, 2, 6, UNI_CF } /* isformat */, + { 0, 7347, 0, 9, 0, UNI_ORKH } /* oldturkic */, + { 7, 8233, 2127, 7, 14, UNI_SC__ROHG } /* script=hanifirohingya */, + { 1, 697, 0, 2, 0, UNI_MN } /* mn */, + { 0, 6315, 8864, 12, 5, -UNI_XIDC } /* xidcontinue=false */, + { 11, 9909, 9318, 3, 3, UNI_PHLP } /* isphlp */, + { 4, 9629, 9154, 3, 2, UNI_LB__CB } /* lb=cb */, + { 5, 8424, 7118, 6, 10, UNI_INWARANGCITI } /* block=warangciti */, + { 0, 8634, 36, 6, 1, UNI_UIDEO } /* uideo=t */, + { 1, 184, 5435, 2, 12, UNI_BIDIM } /* isbidimirrored */, + { 1, 1243, 8864, 21, 5, -UNI_CE } /* compositionexclusion=false */, + { 3, 8886, 7356, 3, 4, UNI_PALM } /* sc=palm */, + { 2, 9605, 3852, 3, 5, UNI_DT__FIN } /* dt=final */, + { 0, 3671, 8568, 17, 6, UNI_LYDI } /* scriptextensions=lydian */, + { 0, 5435, 3, 13, 1, -UNI_BIDIM } /* bidimirrored=f */, + { 2, 6003, 995, 12, 2, -UNI_JOINC } /* joincontrol=no */, + { 8, 9365, 8924, 4, 5, UNI_ORYA } /* scx=oriya */, + { 1, 5339, 339, 14, 2, UNI_SB__LO } /* sentencebreak=lo */, + { 2, 5227, 9734, 14, 3, UNI_NFDQC__Y } /* nfdquickcheck=yes */, + { 1, 8550, 0, 4, 0, UNI_LEPC } /* lepc */, + { 0, 8568, 0, 4, 0, UNI_LYDI } /* lydi */, + { 2, 5565, 9671, 13, 3, UNI_JG__TAH } /* joininggroup=tah */, + { 0, 9113, 9524, 4, 3, UNI_CCC__L } /* ccc=224 */, + { 0, 4778, 1099, 3, 3, UNI_UCAS } /* isucas */, + { 0, 9731, 1164, 3, 2, UNI_LB__LF } /* wb=lf */, + { 1, 9093, 5031, 4, 14, UNI_LATINEXTD } /* blk=latinextendedd */, + { 2, 9629, 7176, 3, 9, UNI_LB__AI } /* lb=ambiguous */, + { 3, 3671, 3620, 17, 4, UNI_MANI } /* scriptextensions=mani */, + { 3, 3671, 6246, 17, 4, UNI_HUNG } /* scriptextensions=hung */, + { 0, 8886, 8550, 3, 6, UNI_LEPC } /* sc=lepcha */, + { 0, 9728, 9734, 3, 3, UNI_VS } /* vs=yes */, + { 2, 4705, 8311, 3, 3, UNI_TIRH } /* istirh */, + { 3, 8502, 0, 6, 0, UNI_GOTH } /* gothic */, + { 2, 9647, 7158, 3, 9, UNI_NV___MINUS_1_SLASH_2 } /* nv=-5.00e-01 */, + { 2, 9113, 2920, 4, 5, UNI_CCC__A } /* ccc=above */, + { 0, 9731, 5919, 3, 12, UNI_WB__EX } /* wb=extendnumlet */, + { 1, 8424, 4717, 6, 8, UNI_TAMILSUP } /* block=tamilsup */, + { 0, 9129, 9433, 4, 4, UNI_CWU } /* cwu=true */, + { 0, 1812, 0, 9, 0, UNI_XPOSIXUPPER } /* uppercase */, + { 0, 9647, 7596, 3, 8, UNI_NV__3_SLASH_80 } /* nv=3.75e-02 */, + { 4, 9173, 0, 4, 0, UNI_GURU } /* guru */, + { 1, 9365, 9205, 4, 4, UNI_KNDA } /* scx=knda */, + { 1, 3756, 0, 9, 0, UNI_ARABICSUP } /* arabicsup */, + { 0, 9647, 8394, 3, 6, UNI_NV__800000 } /* nv=800000 */, + { 0, 8556, 9433, 6, 4, UNI_XPOSIXLOWER } /* lower=true */, + { 0, 1691, 0, 22, 0, UNI_bpt_values_index } /* bidipairedbrackettype= */, + { 4, 8496, 1, 6, 1, -UNI_CWKCF } /* cwkcf=n */, + { 0, 9093, 2646, 4, 10, UNI_JAMO } /* blk=hanguljamo */, + { 5, 3671, 7956, 17, 4, UNI_TAGB } /* scriptextensions=tagb */, + { 2, 8233, 4582, 7, 15, UNI_MERC } /* script=meroiticcursive */, + { 1, 8233, 2837, 8, 8, UNI_SUND } /* script=sundanese */, + { 4, 9365, 9249, 4, 4, UNI_MERC } /* scx=merc */, + { 20, 7025, 7098, 3, 10, UNI_AGE__NA } /* in=unassigned */, + { 0, 9647, 9569, 3, 3, UNI_NV__5_SLASH_6 } /* nv=5/6 */, + { 0, 8170, 9734, 7, 3, UNI_DT__NONE } /* nfkdqc=yes */, + { 0, 9623, 5708, 3, 13, UNI_JG__MANICHAEANWAW } /* jg=manichaeanwaw */, + { 0, 117, 447, 3, 17, UNI_IDEOGRAPHICSYMBOLS } /* inideographicsymbols */, + { 15, 5760, 8364, 13, 2, UNI_NV__40 } /* numericvalue=40 */, + { 1, 3868, 27, 16, 2, UNI_LOWERCASELETTER } /* generalcategory=ll */, + { 3, 9647, 9037, 3, 4, UNI_NV__5_SLASH_12 } /* nv=5/12 */, + { 0, 184, 9349, 2, 4, UNI_ROHG } /* isrohg */, + { 2, 8424, 5311, 6, 14, UNI_INPSALTERPAHLAVI } /* block=psalterpahlavi */, + { 0, 8332, 1316, 4, 22, UNI_ARABICPFA } /* isarabicpresentationformsa */, + { 1, 1497, 7098, 9, 10, UNI_CN } /* category=unassigned */, + { 2, 9365, 9421, 4, 4, UNI_TGLG } /* scx=tglg */, + { 0, 5760, 7540, 13, 5, UNI_NV__20000 } /* numericvalue=20000 */, + { 6, 9097, 5678, 4, 4, UNI_BPT__N } /* bpt=none */, + { 7, 4778, 513, 3, 15, UNI_UIDEO } /* isunifiedideograph */, + { 1, 184, 43, 3, 2, UNI_CJK } /* iscjk */, + { 0, 3739, 36, 17, 1, UNI_UIDEO } /* unifiedideograph=t */, + { 3, 8424, 8310, 6, 7, UNI_INTIRHUTA } /* block=tirhuta */, + { 1, 9093, 8149, 4, 7, UNI_INMULTANI } /* blk=multani */, + { 4, 9365, 8310, 4, 4, UNI_TIRH } /* scx=tirh */, + { 4, 1497, 6635, 9, 11, UNI_SO } /* category=othersymbol */, + { 1, 6918, 6848, 10, 10, UNI_LB__BA } /* linebreak=breakafter */, + { 1, 184, 8052, 3, 5, UNI_COMPEX } /* iscompex */, + { 6, 8233, 7329, 7, 9, UNI_ITAL } /* script=olditalic */, + { 2, 9629, 5520, 3, 5, UNI_LB__EB } /* lb=ebase */, + { 0, 9093, 349, 4, 33, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supplementalsymbolsandpictographs */, + { 1, 3128, 1, 18, 1, -UNI_IDSB } /* idsbinaryoperator=n */, + { 5, 184, 5513, 2, 12, UNI_GRBASE } /* isgraphemebase */, + { 6, 8233, 8079, 7, 4, UNI_SC__GRAN } /* script=gran */, + { 1, 2148, 8276, 3, 6, UNI_SUPPUAB } /* insuppuab */, + { 1, 184, 7788, 2, 8, UNI_BALI } /* isbalinese */, + { 0, 5213, 47, 14, 1, UNI_NFCQC__M } /* nfcquickcheck=m */, + { 0, 8886, 9481, 3, 4, UNI_ZANB } /* sc=zanb */, + { 0, 6918, 3248, 10, 5, UNI_LB__SP } /* linebreak=space */, + { 1, 9365, 6246, 4, 4, UNI_HUNG } /* scx=hung */, + { 0, 184, 1977, 2, 21, UNI__PERL_NCHAR } /* isnoncharactercodepoint */, + { 0, 9141, 0, 4, 0, UNI_dia_values_index } /* dia= */, + { 3, 6005, 8031, 3, 6, UNI_CJKEXTD } /* incjkextd */, + { 3, 184, 1846, 3, 21, UNI_INDICNUMBERFORMS } /* iscommonindicnumberforms */, + { 1, 6828, 3608, 10, 3, UNI_BC__RLI } /* bidiclass=rli */, + { 1, 6315, 0, 12, 0, UNI_xidc_values_index } /* xidcontinue= */, + { 16, 9602, 3, 3, 1, -UNI_DI } /* di=f */, + { 1, 5760, 7691, 13, 2, UNI_NV__36 } /* numericvalue=36 */, + { 4, 4492, 0, 15, 0, UNI_ARMI } /* imperialaramaic */, + { 0, 9605, 1279, 3, 3, UNI_DT__SUB } /* dt=sub */, + { 0, 2148, 7069, 3, 9, UNI_SUPARROWSA } /* insuparrowsa */, + { 0, 184, 983, 2, 5, UNI_GREK } /* isgreek */, + { 1, 8332, 7187, 4, 7, UNI_ARABICPFA } /* isarabicpfa */, + { 0, 598, 0, 2, 0, UNI_XPOSIXCNTRL } /* cc */, + { 2, 9093, 1823, 4, 22, UNI_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatideographssup */, + { 0, 7302, 0, 9, 0, UNI_NBAT } /* nabataean */, + { 1, 9623, 4028, 3, 16, UNI_JG__MANICHAEANLAMEDH } /* jg=manichaeanlamedh */, + { 4, 8233, 8699, 7, 5, UNI_BATK } /* script=batak */, + { 13, 8233, 9349, 7, 4, UNI_SC__ROHG } /* script=rohg */, + { 6, 184, 4204, 2, 16, UNI_SYRIACSUP } /* issyriacsupplement */, + { 0, 8899, 26, 5, 1, UNI_MATH } /* math=y */, + { 0, 8233, 9201, 7, 4, UNI_KHMR } /* script=khmr */, + { 0, 3739, 9433, 17, 4, UNI_UIDEO } /* unifiedideograph=true */, + { 5, 6828, 1, 11, 1, UNI_BC__BN } /* bidiclass=bn */, + { 5, 9623, 9341, 3, 4, UNI_JG__QAPH } /* jg=qaph */, + { 8, 8233, 8121, 7, 7, UNI_SC__LINA } /* script=lineara */, + { 0, 3243, 0, 10, 0, UNI_XPOSIXSPACE } /* whitespace */, + { 0, 1362, 8371, 24, 2, UNI_CCC__32 } /* canonicalcombiningclass=32 */, + { 0, 78, 0, 4, 0, UNI_ARAB } /* arab */, + { 1, 9593, 407, 3, 2, UNI_BC__ON } /* bc=on */, + { 5, 4826, 0, 8, 0, UNI_XPOSIXXDIGIT } /* hexdigit */, + { 1, 8424, 8502, 6, 6, UNI_INGOTHIC } /* block=gothic */, + { 0, 1362, 8473, 25, 5, UNI_CCC__132 } /* canonicalcombiningclass=ccc132 */, + { 0, 8424, 6988, 6, 10, UNI_INOLDSOGDIAN } /* block=oldsogdian */, + { 2, 8652, 0, 6, 0, UNI_WCHO } /* wancho */, + { 2, 8233, 3836, 7, 7, UNI_SC__CPRT } /* script=cypriot */, + { 0, 3671, 2837, 18, 3, UNI_SUND } /* scriptextensions=sund */, + { 0, 6338, 3, 11, 1, -UNI_XPOSIXALPHA } /* alphabetic=f */, + { 0, 5979, 0, 12, 0, UNI_ideo_values_index } /* ideographic= */, + { 0, 5565, 8658, 13, 4, UNI_JG__YUDH } /* joininggroup=yudh */, + { 1, 184, 600, 3, 29, UNI_CJKEXTD } /* iscjkunifiedideographsextensiond */, + { 1, 6005, 43, 3, 8, UNI_CJKCOMPAT } /* incjkcompat */, + { 0, 9093, 8514, 4, 6, UNI_INHATRAN } /* blk=hatran */, + { 1, 2204, 8925, 3, 4, UNI_ORYA } /* isoriya */, + { 12, 9093, 3773, 5, 15, UNI_BOPOMOFOEXT } /* blk=bopomofoextended */, + { 2, 6918, 9626, 10, 2, UNI_GCB__T } /* linebreak=jt */, + { 1, 9946, 2837, 3, 8, UNI_SUND } /* issundanese */, + { 0, 9647, 8364, 3, 6, UNI_NV__400000 } /* nv=400000 */, + { 0, 8886, 9389, 3, 4, UNI_SOGO } /* sc=sogo */, + { 0, 9113, 7435, 4, 2, UNI_CCC__11 } /* ccc=11 */, + { 1, 5760, 7158, 13, 9, UNI_NV___MINUS_1_SLASH_2 } /* numericvalue=-5.00e-01 */, + { 1, 9093, 779, 4, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsupplement */, + { 0, 4762, 0, 8, 0, UNI_VEDICEXT } /* vedicext */, + { 0, 184, 7257, 2, 9, UNI_LATINEXTB } /* islatinextb */, + { 3, 9629, 6437, 3, 11, UNI_LB__EX } /* lb=exclamation */, + { 2, 184, 5367, 2, 14, UNI_SUPPUNCTUATION } /* issuppunctuation */, + { 0, 9365, 7118, 4, 4, UNI_WARA } /* scx=wara */, + { 7, 7018, 9551, 10, 3, UNI_IN__3_DOT_2 } /* presentin=3.2 */, + { 0, 9593, 4283, 4, 14, UNI_BC__BN } /* bc=boundaryneutral */, + { 1, 4267, 0, 8, 0, UNI_BAMUMSUP } /* bamumsup */, + { 2, 9365, 7995, 4, 7, UNI_AVST } /* scx=avestan */, + { 6, 9662, 26, 3, 1, UNI_SD } /* sd=y */, + { 3, 3671, 7356, 17, 9, UNI_PALM } /* scriptextensions=palmyrene */, + { 9, 9113, 7683, 4, 2, UNI_CCC__26 } /* ccc=26 */, + { 0, 9169, 0, 4, 0, UNI_GUJR } /* gujr */, + { 3, 9909, 0, 12, 0, UNI_POSIXBLANK } /* isposixblank */, + { 1, 7419, 36, 9, 1, UNI_XIDS } /* xidstart=t */, + { 0, 8233, 7008, 7, 10, UNI_PHNX } /* script=phoenician */, + { 1, 9153, 34, 4, 6, UNI_GCB__EX } /* gcb=extend */, + { 2, 9365, 2333, 4, 4, UNI_GLAG } /* scx=glag */, + { 12, 8233, 9229, 7, 4, UNI_SC__LINB } /* script=linb */, + { 2, 184, 2931, 3, 17, UNI_CHEROKEESUP } /* ischerokeesupplement */, + { 8, 8684, 1, 5, 1, -UNI_POSIXXDIGIT } /* ahex=n */, + { 0, 3671, 8002, 17, 7, UNI_BENG } /* scriptextensions=bengali */, + { 4, 8424, 8568, 6, 6, UNI_INLYDIAN } /* block=lydian */, + { 2, 8233, 8191, 7, 7, UNI_OLCK } /* script=olchiki */, + { 0, 3671, 1192, 17, 4, UNI_KANA } /* scriptextensions=kana */, + { 0, 9593, 835, 3, 2, UNI_BC__WS } /* bc=ws */, + { 1, 184, 3980, 2, 16, UNI_LINEARBIDEOGRAMS } /* islinearbideograms */, + { 13, 5325, 26, 14, 1, UNI_QMARK } /* quotationmark=y */, + { 0, 1773, 26, 6, 1, UNI_CASED } /* cased=y */, + { 0, 6316, 26, 11, 1, UNI_IDC } /* idcontinue=y */, + { 3, 9093, 2169, 4, 14, UNI_MEETEIMAYEKEXT } /* blk=meeteimayekext */, + { 2, 9365, 2006, 4, 4, UNI_MODI } /* scx=modi */, + { 2, 8233, 3984, 8, 3, UNI_SARB } /* script=sarb */, + { 5, 9935, 3248, 5, 5, UNI_XPOSIXSPACE } /* xperlspace */, + { 0, 9629, 6968, 3, 10, UNI_LB__NS } /* lb=nonstarter */, + { 1, 9141, 995, 4, 2, -UNI_DIA } /* dia=no */, + { 1, 1084, 26, 26, 1, UNI_CWKCF } /* changeswhennfkccasefolded=y */, + { 14, 9593, 32, 3, 2, UNI_BC__CS } /* bc=cs */, + { 0, 9093, 3290, 4, 4, UNI_RUMI } /* blk=rumi */, + { 8, 8886, 829, 4, 3, UNI_SC__KNDA } /* sc=knda */, + { 1, 4717, 0, 8, 0, UNI_TAMILSUP } /* tamilsup */, + { 1, 9946, 6992, 3, 3, UNI_SOGD } /* issogd */, + { 2, 1362, 8835, 25, 4, UNI_CCC__91 } /* canonicalcombiningclass=ccc91 */, + { 1, 7128, 5625, 10, 2, UNI_WB__ML } /* wordbreak=ml */, + { 3, 3002, 1279, 18, 3, UNI_DT__SUB } /* decompositiontype=sub */, + { 0, 3290, 0, 4, 0, UNI_RUMI } /* rumi */, + { 2, 1362, 6404, 24, 11, UNI_CCC__DB } /* canonicalcombiningclass=doublebelow */, + { 4, 3210, 0, 8, 0, UNI_DINGBATS } /* dingbats */, + { 5, 9365, 2127, 4, 14, UNI_ROHG } /* scx=hanifirohingya */, + { 2, 5760, 9037, 13, 4, UNI_NV__5_SLASH_12 } /* numericvalue=5/12 */, + { 5, 6567, 287, 6, 29, UNI_MISCMATHSYMBOLSB } /* inmiscellaneousmathematicalsymbolsb */, + { 0, 8412, 9734, 6, 3, UNI_BIDIC } /* bidic=yes */, + { 1, 9093, 1622, 4, 14, UNI_LATINEXTA } /* blk=latinextendeda */, + { 0, 3705, 0, 17, 0, UNI_SMALLFORMS } /* smallformvariants */, + { 1, 1362, 3441, 24, 9, UNI_CCC__BL } /* canonicalcombiningclass=belowleft */, + { 1, 7844, 0, 8, 0, UNI_GUJR } /* gujarati */, + { 8, 8233, 2532, 7, 6, UNI_BRAH } /* script=brahmi */, + { 0, 9465, 0, 4, 0, UNI_XPEO } /* xpeo */, + { 5, 6567, 206, 6, 11, UNI_MISCPICTOGRAPHS } /* inmiscpictographs */, + { 2, 9093, 7812, 4, 8, UNI_INDUPLOYAN } /* blk=duployan */, + { 0, 1924, 0, 10, 1, UNI_UPPERCASELETTER } /* category=lu */, + { 11, 3671, 7375, 18, 8, UNI_SAMR } /* scriptextensions=samaritan */, + { 1, 8424, 7365, 6, 9, UNI_INPAUCINHAU } /* block=paucinhau */, + { 1, 9623, 5073, 3, 14, UNI_JG__MANICHAEANAYIN } /* jg=manichaeanayin */, + { 2, 5339, 495, 14, 7, UNI_SB__NU } /* sentencebreak=numeric */, + { 0, 6768, 4994, 3, 9, UNI_YIRADICALS } /* isyiradicals */, + { 0, 2127, 0, 4, 0, UNI_HAN } /* hani */, + { 6, 8233, 9281, 7, 4, UNI_NEWA } /* script=newa */, + { 0, 3964, 0, 16, 0, UNI_LATIN1 } /* latin1supplement */, + { 2, 6828, 8, 10, 2, UNI_BC__AN } /* bidiclass=an */, + { 0, 8424, 8142, 6, 7, UNI_INMARCHEN } /* block=marchen */, + { 0, 8886, 9317, 3, 4, UNI_SC__PHLP } /* sc=phlp */, + { 0, 5809, 0, 2, 0, UNI_PF } /* pf */, + { 0, 8424, 43, 7, 35, UNI_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatibilityideographssupplement */, + { 4, 184, 6279, 2, 12, UNI_PLAYINGCARDS } /* isplayingcards */, + { 0, 9093, 8016, 4, 7, UNI_CJKEXTB } /* blk=cjkextb */, + { 0, 2238, 0, 3, 0, UNI_XPOSIXXDIGIT } /* hex */, + { 0, 9623, 4562, 3, 5, UNI_JG__SADHE } /* jg=sadhe */, + { 6, 8886, 8128, 3, 4, UNI_MAKA } /* sc=maka */, + { 2, 184, 9333, 2, 4, UNI_COPT } /* isqaac */, + { 1, 9623, 8964, 3, 5, UNI_JG__ZHAIN } /* jg=zhain */, + { 1, 9593, 9653, 3, 3, UNI_BC__PDF } /* bc=pdf */, + { 2, 9093, 4717, 4, 5, UNI_INTAMIL } /* blk=tamil */, + { 0, 5565, 5669, 13, 13, UNI_JG__MANICHAEANONE } /* joininggroup=manichaeanone */, + { 8, 8879, 2473, 5, 3, UNI_INPC__TOP } /* inpc=top */, + { 6, 9731, 125, 3, 2, UNI_LB__CR } /* wb=cr */, + { 1, 184, 3552, 2, 16, UNI_ETHIOPICEXT } /* isethiopicextended */, + { 1, 6885, 1086, 3, 3, UNI_HANG } /* ishang */, + { 4, 8886, 1599, 3, 6, UNI_SC__HANG } /* sc=hangul */, + { 4, 8233, 9253, 7, 4, UNI_MIAO } /* script=miao */, + { 1, 3398, 26, 18, 1, UNI_VS } /* variationselector=y */, + { 0, 7018, 9701, 10, 3, UNI_IN__5_DOT_2 } /* presentin=v52 */, + { 1, 9608, 1174, 3, 9, UNI_EA__F } /* ea=fullwidth */, + { 12, 8960, 36, 4, 1, UNI_IDS } /* ids=t */, + { 0, 3671, 9277, 17, 4, UNI_NBAT } /* scriptextensions=nbat */, + { 0, 3671, 8502, 17, 4, UNI_GOTH } /* scriptextensions=goth */, + { 1, 3671, 9305, 17, 4, UNI_ORYA } /* scriptextensions=orya */, + { 1, 7221, 0, 9, 0, UNI_EMOTICONS } /* emoticons */, + { 3, 9629, 414, 3, 11, UNI_LB__ID } /* lb=ideographic */, + { 6, 512, 0, 16, 0, UNI_UIDEO } /* unifiedideograph */, + { 32, 3868, 32, 16, 2, UNI__PERL_SURROGATE } /* generalcategory=cs */, + { 0, 8418, 36, 6, 1, UNI_BIDIM } /* bidim=t */, + { 2, 3002, 2493, 18, 8, UNI_DT__VERT } /* decompositiontype=vertical */, + { 9, 6928, 8864, 10, 5, -UNI_XPOSIXLOWER } /* lowercase=false */, + { 2, 8849, 36, 5, 1, UNI_CWCM } /* cwcm=t */, + { 0, 5565, 6701, 13, 11, UNI_JG__STRAIGHTWAW } /* joininggroup=straightwaw */, + { 1, 9623, 4954, 3, 3, UNI_JG__HEH } /* jg=heh */, + { 0, 184, 3884, 2, 11, UNI_GEORGIANEXT } /* isgeorgianext */, + { 2, 8879, 6268, 3, 7, UNI_PHAISTOS } /* inphaistos */, + { 0, 8886, 7118, 3, 4, UNI_WARA } /* sc=wara */, + { 0, 6918, 83, 10, 2, UNI_LB__CM } /* linebreak=cm */, + { 3, 117, 1853, 4, 14, UNI_INDICNUMBERFORMS } /* inindicnumberforms */, + { 1, 1497, 4747, 9, 15, UNI_UPPERCASELETTER } /* category=uppercaseletter */, + { 0, 4961, 0, 14, 0, UNI_HIGHSURROGATES } /* highsurrogates */, + { 2, 8233, 9277, 7, 4, UNI_NBAT } /* script=nbat */, + { 2, 3518, 0, 17, 0, UNI_CYRILLICEXTB } /* cyrillicextendedb */, + { 9, 1911, 3948, 22, 16, UNI_INSC__INVISIBLESTACKER } /* indicsyllabiccategory=invisiblestacker */, + { 2, 3671, 9317, 17, 4, UNI_PHLP } /* scriptextensions=phlp */, + { 0, 5617, 0, 9, 0, UNI_MLYM } /* malayalam */, + { 6, 5760, 8669, 13, 5, UNI_NV__1_SLASH_320 } /* numericvalue=1/320 */, + { 0, 3868, 4687, 16, 15, UNI_PS } /* generalcategory=openpunctuation */, + { 9, 9093, 4172, 4, 16, UNI_SUPMATHOPERATORS } /* blk=supmathoperators */, + { 2, 9093, 8538, 4, 6, UNI_INKHOJKI } /* blk=khojki */, + { 1, 8635, 9433, 5, 4, UNI_IDEO } /* ideo=true */, + { 1, 4826, 995, 9, 2, -UNI_XPOSIXXDIGIT } /* hexdigit=no */, + { 0, 3671, 7356, 17, 4, UNI_PALM } /* scriptextensions=palm */, + { 4, 3671, 1085, 17, 4, UNI_HANG } /* scriptextensions=hang */, + { 4, 9093, 4863, 4, 14, UNI_CJKCOMPATFORMS } /* blk=cjkcompatforms */, + { 1, 9909, 62, 7, 5, UNI_POSIXGRAPH } /* isposixgraph */, + { 1, 3552, 0, 17, 0, UNI_ETHIOPICEXTA } /* ethiopicextendeda */, + { 0, 8939, 0, 5, 0, UNI_TALE } /* taile */, + { 0, 8424, 2931, 7, 17, UNI_CHEROKEESUP } /* block=cherokeesupplement */, + { 3, 184, 878, 2, 14, UNI_PUA } /* isprivateusearea */, + { 0, 8142, 0, 4, 0, UNI_MARC } /* marc */, + { 0, 183, 0, 34, 0, UNI_MISCPICTOGRAPHS } /* miscellaneoussymbolsandpictographs */, + { 2, 9113, 8832, 4, 2, UNI_CCC__84 } /* ccc=84 */, + { 13, 9093, 8142, 4, 7, UNI_INMARCHEN } /* blk=marchen */, + { 4, 3671, 8255, 18, 6, UNI_SIDD } /* scriptextensions=siddham */, + { 0, 4361, 3095, 5, 15, UNI_INPUNCTUATION } /* ingeneralpunctuation */, + { 4, 1362, 8822, 24, 2, UNI_CCC__35 } /* canonicalcombiningclass=35 */, + { 0, 6885, 2647, 3, 9, UNI_JAMO } /* ishanguljamo */, + { 1, 4076, 0, 16, 0, UNI_MISCMATHSYMBOLSA } /* miscmathsymbolsa */, + { 0, 9113, 7507, 4, 2, UNI_CCC__12 } /* ccc=12 */, + { 0, 8332, 8680, 3, 4, UNI_ADLM } /* isadlam */, + { 0, 8886, 4108, 3, 7, UNI_SC__MYMR } /* sc=myanmar */, + { 4, 9093, 1531, 5, 22, UNI_BYZANTINEMUSIC } /* blk=byzantinemusicalsymbols */, + { 0, 8424, 5721, 6, 13, UNI_MAYANNUMERALS } /* block=mayannumerals */, + { 0, 8598, 26, 6, 1, UNI__PERL_PATWS } /* patws=y */, + { 22, 3671, 6691, 18, 10, UNI_SORA } /* scriptextensions=sorasompeng */, + { 1, 9731, 108, 3, 2, UNI_WB__MB } /* wb=mb */, + { 1, 8338, 36, 7, 1, UNI_XPOSIXSPACE } /* wspace=t */, + { 19, 8233, 8502, 7, 4, UNI_GOTH } /* script=goth */, + { 1, 1362, 8451, 24, 3, UNI_CCC__118 } /* canonicalcombiningclass=118 */, + { 4, 9620, 2192, 3, 2, UNI_PD } /* gc=pd */, + { 3, 3671, 8894, 17, 4, UNI_LIMB } /* scriptextensions=limb */, + { 2, 21, 3964, 2, 6, UNI_LATIN1 } /* inlatin1 */, + { 0, 9093, 1668, 4, 23, UNI_SUPPUNCTUATION } /* blk=supplementalpunctuation */, + { 0, 8261, 0, 7, 0, UNI_SOYO } /* soyombo */, + { 6, 5760, 7492, 13, 8, UNI_NV__1_SLASH_6 } /* numericvalue=1.67e-01 */, + { 0, 8886, 7892, 3, 4, UNI_SC__JAVA } /* sc=java */, + { 0, 8424, 1314, 6, 24, UNI_ARABICPFA } /* block=arabicpresentationformsa */, + { 2, 184, 4124, 2, 16, UNI_MYANMAREXTB } /* ismyanmarextendedb */, + { 0, 9125, 0, 3, 0, UNI_CWT } /* cwt */, + { 2, 184, 7313, 3, 2, UNI_CWT } /* iscwt */, + { 16, 5565, 5171, 13, 14, UNI_JG__MANICHAEANTETH } /* joininggroup=manichaeanteth */, + { 2, 9623, 4060, 3, 16, UNI_JG__MANICHAEANTWENTY } /* jg=manichaeantwenty */, + { 0, 1497, 3820, 9, 16, UNI_PE } /* category=closepunctuation */, + { 0, 184, 5604, 2, 13, UNI_LOWSURROGATES } /* islowsurrogates */, + { 0, 8296, 0, 7, 0, UNI_TAVT } /* taiviet */, + { 6, 9113, 8455, 5, 5, UNI_CCC__122 } /* ccc=ccc122 */, + { 1, 184, 7374, 2, 9, UNI_SAMR } /* issamaritan */, + { 1, 9093, 8430, 4, 6, UNI_INCARIAN } /* blk=carian */, + { 1, 7018, 7548, 10, 3, UNI_IN__3_DOT_1 } /* presentin=3.1 */, + { 0, 8886, 9453, 3, 3, UNI_VAI } /* sc=vai */, + { 1, 8886, 78, 3, 6, UNI_SC__ARAB } /* sc=arabic */, + { 2, 8508, 1, 6, 1, -UNI_GREXT } /* grext=n */, + { 13, 8871, 112, 3, 2, UNI_SB__SC } /* sb=sc */, + { 1, 3002, 719, 18, 3, UNI_DT__ENC } /* decompositiontype=enc */, + { 11, 1136, 995, 26, 2, -UNI_DI } /* defaultignorablecodepoint=no */, + { 0, 9113, 8449, 5, 4, UNI_CCC__11 } /* ccc=ccc11 */, + { 1, 9113, 8464, 4, 2, UNI_CCC__29 } /* ccc=29 */, + { 0, 9593, 18, 3, 1, UNI_BC__R } /* bc=r */, + { 0, 5325, 36, 14, 1, UNI_QMARK } /* quotationmark=t */, + { 4, 1362, 9077, 24, 3, UNI_CCC__202 } /* canonicalcombiningclass=atb */, + { 0, 8233, 9317, 7, 4, UNI_SC__PHLP } /* script=phlp */, + { 8, 8424, 5526, 6, 8, UNI_GREEKEXT } /* block=greekext */, + { 13, 9620, 74, 3, 2, UNI_ME } /* gc=me */, + { 0, 1911, 6219, 22, 12, UNI_INSC__NUMBERJOINER } /* indicsyllabiccategory=numberjoiner */, + { 2, 9093, 3552, 4, 17, UNI_ETHIOPICEXTA } /* blk=ethiopicextendeda */, + { 0, 9623, 6123, 3, 12, UNI_JG__MALAYALAMSSA } /* jg=malayalamssa */, + { 1, 6246, 0, 4, 0, UNI_HUNG } /* hung */, + { 0, 3868, 4732, 16, 15, UNI_TITLE } /* generalcategory=titlecaseletter */, + { 2, 9629, 721, 3, 2, UNI_LB__CL } /* lb=cl */, + { 1, 9623, 5143, 3, 14, UNI_JG__MANICHAEANQOPH } /* jg=manichaeanqoph */, + { 0, 184, 2, 3, 1, UNI_CI } /* isci */, + { 2, 8424, 8679, 6, 5, UNI_INADLAM } /* block=adlam */, + { 8, 184, 3772, 2, 16, UNI_BOPOMOFOEXT } /* isbopomofoextended */, + { 8, 5435, 0, 5, 0, UNI_BIDIM } /* bidim */, + { 0, 3722, 0, 17, 0, UNI_SUTTONSIGNWRITING } /* suttonsignwriting */, + { 0, 8510, 26, 4, 1, UNI_EXT } /* ext=y */, + { 0, 8871, 339, 3, 2, UNI_SB__LO } /* sb=lo */, + { 0, 184, 9173, 2, 4, UNI_GURU } /* isguru */, + { 5, 6885, 1600, 3, 22, UNI_COMPATJAMO } /* ishangulcompatibilityjamo */, + { 1, 8886, 3110, 3, 8, UNI_SC__GEOR } /* sc=georgian */, + { 5, 9365, 9349, 4, 4, UNI_ROHG } /* scx=rohg */, + { 2, 184, 7078, 2, 10, UNI_SUPARROWSB } /* issuparrowsb */, + { 2, 8886, 1845, 3, 6, UNI_SC__ZYYY } /* sc=common */, + { 0, 5339, 72, 14, 2, UNI_SB__LE } /* sentencebreak=le */, + { 0, 8640, 9433, 6, 4, UNI_XPOSIXUPPER } /* upper=true */, + { 2, 9093, 3586, 4, 17, UNI_INDICSIYAQNUMBERS } /* blk=indicsiyaqnumbers */, + { 1, 9365, 8128, 4, 7, UNI_MAKA } /* scx=makasar */, + { 1, 7025, 5409, 3, 2, UNI_IN__10 } /* in=10 */, + { 2, 9093, 8135, 4, 7, UNI_INMANDAIC } /* blk=mandaic */, + { 0, 9093, 5003, 4, 14, UNI_LATINEXTB } /* blk=latinextendedb */, + { 0, 6567, 254, 6, 29, UNI_MISCMATHSYMBOLSA } /* inmiscellaneousmathematicalsymbolsa */, + { 6, 4717, 0, 5, 0, UNI_TAML } /* tamil */, + { 0, 8424, 3110, 6, 8, UNI_INGEORGIAN } /* block=georgian */, + { 17, 9623, 5381, 3, 10, UNI_JG__TEHMARBUTA } /* jg=tehmarbuta */, + { 1, 4778, 4748, 3, 14, UNI_UPPERCASELETTER } /* isuppercaseletter */, + { 3, 1362, 7763, 24, 2, UNI_CCC__19 } /* canonicalcombiningclass=19 */, + { 1, 8233, 7203, 7, 9, UNI_BHKS } /* script=bhaiksuki */, + { 0, 2106, 5520, 21, 5, UNI_WB__EB } /* graphemeclusterbreak=ebase */, + { 5, 9113, 8457, 4, 3, UNI_CCC__122 } /* ccc=122 */, + { 1, 8886, 9457, 3, 4, UNI_WCHO } /* sc=wcho */, + { 7, 3868, 4507, 16, 15, UNI_LOWERCASELETTER } /* generalcategory=lowercaseletter */, + { 1, 9093, 3416, 4, 17, UNI_ALCHEMICAL } /* blk=alchemicalsymbols */, + { 1, 5760, 8400, 13, 2, UNI_NV__90 } /* numericvalue=90 */, + { 4, 8332, 5423, 3, 12, UNI_AEGEANNUMBERS } /* isaegeannumbers */, + { 5, 5760, 7644, 13, 8, UNI_NV__11_SLASH_2 } /* numericvalue=5.50e+00 */, + { 0, 8424, 9253, 6, 4, UNI_INMIAO } /* block=miao */, + { 2, 6885, 34, 3, 2, UNI_XPOSIXXDIGIT } /* ishex */, + { 0, 382, 0, 32, 0, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* egyptianhieroglyphformatcontrols */, + { 0, 8424, 3308, 6, 12, UNI_SMALLKANAEXT } /* block=smallkanaext */, + { 1, 8496, 36, 6, 1, UNI_CWKCF } /* cwkcf=t */, + { 1, 9397, 0, 4, 0, UNI_TAGS } /* tags */, + { 0, 4933, 0, 14, 0, UNI_INGREEK } /* greekandcoptic */, + { 8, 8844, 1, 5, 1, -UNI_CWCF } /* cwcf=n */, + { 0, 184, 9261, 2, 4, UNI_MRO } /* ismroo */, + { 2, 9365, 9169, 4, 4, UNI_GUJR } /* scx=gujr */, + { 0, 1362, 8352, 24, 3, UNI_CCC__216 } /* canonicalcombiningclass=216 */, + { 0, 9365, 7812, 4, 8, UNI_DUPL } /* scx=duployan */, + { 2, 8100, 36, 7, 1, UNI_HYPHEN } /* hyphen=t */, + { 16, 9623, 4038, 3, 3, UNI_JG__LAM } /* jg=lam */, + { 4, 1497, 45, 9, 2, UNI_CO } /* category=co */, + { 0, 8233, 493, 7, 3, UNI_SC__HAN } /* script=han */, + { 4, 3868, 4140, 16, 5, UNI_C } /* generalcategory=other */, + { 1, 184, 3964, 2, 9, UNI_LATIN1 } /* islatin1sup */, + { 1, 9049, 7508, 4, 3, UNI_AGE__2 } /* age=2.0 */, + { 2, 9620, 206, 3, 2, UNI_PI } /* gc=pi */, + { 0, 8424, 8065, 6, 7, UNI_INELBASAN } /* block=elbasan */, + { 4, 5325, 8864, 14, 5, -UNI_QMARK } /* quotationmark=false */, + { 3, 5513, 0, 13, 0, UNI_grbase_values_index } /* graphemebase= */, + { 1, 9113, 24, 4, 1, UNI_CCC__L } /* ccc=l */, + { 7, 7018, 9698, 10, 3, UNI_IN__5_DOT_1 } /* presentin=v51 */, + { 0, 1192, 0, 4, 0, UNI_KANA } /* kana */, + { 8, 8233, 9169, 7, 4, UNI_SC__GUJR } /* script=gujr */, + { 0, 1576, 0, 15, 0, UNI_GEOMETRICSHAPES } /* geometricshapes */, + { 4, 9629, 9757, 3, 2, UNI_LB__H2 } /* lb=h2 */, + { 1, 6003, 26, 12, 1, UNI_JOINC } /* joincontrol=y */, + { 1, 8960, 26, 4, 1, UNI_IDS } /* ids=y */, + { 0, 9093, 7329, 4, 9, UNI_INOLDITALIC } /* blk=olditalic */, + { 1, 9305, 0, 4, 0, UNI_ORYA } /* orya */, + { 11, 8959, 8864, 5, 5, -UNI_XIDS } /* xids=false */, + { 20, 5760, 8358, 13, 6, UNI_NV__300000 } /* numericvalue=300000 */, + { 0, 9623, 5171, 3, 14, UNI_JG__MANICHAEANTETH } /* jg=manichaeanteth */, + { 8, 9620, 9777, 3, 2, UNI_ZP } /* gc=zp */, + { 4, 9728, 3, 3, 1, -UNI_VS } /* vs=f */, + { 0, 6918, 4195, 10, 9, UNI_LB__EM } /* linebreak=emodifier */, + { 1, 8879, 2479, 5, 14, UNI_INPC__BOTTOMANDRIGHT } /* inpc=bottomandright */, + { 0, 9365, 7329, 4, 9, UNI_ITAL } /* scx=olditalic */, + { 0, 5721, 0, 13, 0, UNI_MAYANNUMERALS } /* mayannumerals */, + { 3, 3326, 0, 11, 0, UNI_TAIXUANJING } /* taixuanjing */, + { 2, 1362, 0, 24, 0, UNI_ccc_values_index } /* canonicalcombiningclass= */, + { 0, 8622, 0, 4, 0, UNI_TELU } /* telu */, + { 6, 4462, 995, 15, 2, -UNI_GREXT } /* graphemeextend=no */, + { 2, 7108, 0, 10, 0, UNI_upper_values_index } /* uppercase= */, + { 16, 3671, 3110, 17, 8, UNI_GEOR } /* scriptextensions=georgian */, + { 6, 184, 1955, 2, 22, UNI_MISCTECHNICAL } /* ismiscellaneoustechnical */, + { 0, 8233, 9321, 7, 4, UNI_PHNX } /* script=phnx */, + { 9, 9049, 9441, 4, 4, UNI_AGE__11 } /* age=v110 */, + { 8, 8233, 7311, 7, 9, UNI_TALU } /* script=newtailue */, + { 1, 6885, 1163, 3, 25, UNI_HALFANDFULLFORMS } /* ishalfwidthandfullwidthforms */, + { 2, 9113, 5410, 4, 1, UNI_CCC__0 } /* ccc=0 */, + { 0, 9093, 6580, 4, 11, UNI_MYANMAREXTA } /* blk=myanmarexta */, + { 10, 6918, 1110, 10, 26, UNI_LB__CJ } /* linebreak=conditionaljapanesestarter */, + { 1, 2453, 995, 20, 2, -UNI_TERM } /* terminalpunctuation=no */, + { 0, 8233, 7812, 7, 4, UNI_SC__DUPL } /* script=dupl */, + { 1, 8874, 8864, 5, 5, -UNI_IDST } /* idst=false */, + { 7, 9904, 467, 5, 5, UNI_POSIXPUNCT } /* posixpunct */, + { 0, 6885, 4994, 3, 3, UNI_HIRA } /* ishira */, + { 0, 8884, 1553, 5, 23, UNI_INSC__CONSONANTPRECEDINGREPHA } /* insc=consonantprecedingrepha */, + { 1, 6003, 9734, 12, 3, UNI_JOINC } /* joincontrol=yes */, + { 2, 8886, 2127, 3, 4, UNI_SC__HAN } /* sc=hani */, + { 0, 9365, 9225, 4, 4, UNI_LINA } /* scx=lina */, + { 3, 9629, 9755, 3, 2, UNI_LB__BK } /* lb=bk */, + { 0, 9093, 113, 4, 25, UNI_DIACRITICALS } /* blk=combiningdiacriticalmarks */, + { 0, 7025, 9445, 3, 4, UNI_IN__12 } /* in=v120 */, + { 1, 2106, 1057, 21, 7, UNI_GCB__PP } /* graphemeclusterbreak=prepend */, + { 7, 9297, 0, 4, 0, UNI_OLCK } /* olck */, + { 1, 3868, 9775, 16, 2, UNI_ZL } /* generalcategory=zl */, + { 1, 9093, 7078, 4, 10, UNI_SUPARROWSB } /* blk=suparrowsb */, + { 2, 9623, 7392, 3, 9, UNI_JG__SYRIACWAW } /* jg=syriacwaw */, + { 4, 8424, 2855, 6, 19, UNI_SUPARROWSA } /* block=supplementalarrowsa */, + { 4, 9365, 4205, 5, 5, UNI_SYRC } /* scx=syriac */, + { 0, 3671, 9285, 17, 3, UNI_NKO } /* scriptextensions=nko */, + { 1, 3254, 9734, 18, 3, UNI_RI } /* regionalindicator=yes */, + { 17, 5979, 8864, 12, 5, -UNI_IDEO } /* ideographic=false */, + { 1, 7812, 0, 8, 0, UNI_DUPL } /* duployan */, + { 5, 5760, 7540, 13, 3, UNI_NV__200 } /* numericvalue=200 */, + { 0, 9365, 9394, 5, 3, UNI_SYRC } /* scx=syrc */, + { 3, 7108, 1, 10, 1, -UNI_XPOSIXUPPER } /* uppercase=n */, + { 0, 184, 9285, 2, 4, UNI_NKO } /* isnkoo */, + { 0, 569, 0, 30, 0, UNI_CJKEXTC } /* cjkunifiedideographsextensionc */, + { 1, 1136, 3, 26, 1, -UNI_DI } /* defaultignorablecodepoint=f */, + { 2, 5591, 0, 13, 0, UNI_ZL } /* lineseparator */, + { 0, 5565, 9617, 13, 3, UNI_JG__GAF } /* joininggroup=gaf */, + { 3, 1977, 3, 22, 1, -UNI__PERL_NCHAR } /* noncharactercodepoint=f */, + { 1, 184, 3728, 2, 11, UNI_SGNW } /* issignwriting */, + { 1, 4821, 9734, 14, 3, UNI_POSIXXDIGIT } /* asciihexdigit=yes */, + { 2, 1536, 383, 3, 31, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* inegyptianhieroglyphformatcontrols */, + { 0, 7025, 9674, 3, 3, UNI_IN__2 } /* in=v20 */, + { 2, 8424, 4220, 6, 6, UNI_INTANGUT } /* block=tangut */, + { 8, 8628, 0, 4, 0, UNI_THAA } /* thaa */, + { 8, 8424, 4373, 7, 14, UNI_CONTROLPICTURES } /* block=controlpictures */, + { 1, 8233, 8079, 7, 7, UNI_SC__GRAN } /* script=grantha */, + { 65, 9946, 6724, 3, 3, UNI_SYLO } /* issylo */, + { 1, 8233, 3020, 7, 4, UNI_SC__DEVA } /* script=deva */, + { 1, 184, 4108, 2, 16, UNI_MYANMAREXTA } /* ismyanmarextendeda */, + { 0, 9113, 7614, 4, 2, UNI_CCC__17 } /* ccc=17 */, + { 10, 5760, 8977, 13, 4, UNI_NV__1_SLASH_20 } /* numericvalue=1/20 */, + { 1, 9365, 6051, 4, 4, UNI_MAHJ } /* scx=mahj */, + { 0, 9781, 9883, 6, 9, UNI__PERL_ANY_FOLDS } /* _perl_any_folds */, + { 0, 1757, 9734, 22, 3, UNI_CWL } /* changeswhenlowercased=yes */, + { 1, 8886, 8205, 3, 7, UNI_OSMA } /* sc=osmanya */, + { 3, 8886, 2836, 3, 4, UNI_SUND } /* sc=sund */, + { 0, 6194, 3201, 3, 17, UNI_ORNAMENTALDINGBATS } /* inornamentaldingbats */, + { 0, 9365, 4672, 4, 15, UNI_SARB } /* scx=oldsoutharabian */, + { 14, 8424, 6646, 6, 11, UNI_INPAHAWHHMONG } /* block=pahawhhmong */, + { 2, 8219, 0, 6, 0, UNI_PATSYN } /* patsyn */, + { 0, 9093, 8924, 4, 5, UNI_INORIYA } /* blk=oriya */, + { 0, 9365, 9173, 4, 4, UNI_GURU } /* scx=guru */, + { 2, 9093, 3964, 4, 6, UNI_LATIN1 } /* blk=latin1 */, + { 1, 8510, 36, 4, 1, UNI_EXT } /* ext=t */, + { 2, 9113, 8715, 5, 4, UNI_CCC__14 } /* ccc=ccc14 */, + { 2, 7419, 1, 9, 1, -UNI_XIDS } /* xidstart=n */, + { 1, 1362, 1189, 24, 3, UNI_CCC__214 } /* canonicalcombiningclass=ata */, + { 5, 9093, 4298, 5, 14, UNI_BRAI } /* blk=braillepatterns */, + { 0, 9325, 0, 4, 0, UNI_MIAO } /* plrd */, + { 0, 184, 1387, 3, 23, UNI_CJKSYMBOLS } /* iscjksymbolsandpunctuation */, + { 4, 9137, 9734, 4, 3, UNI_DEP } /* dep=yes */, + { 0, 9125, 9433, 4, 4, UNI_CWT } /* cwt=true */, + { 1, 9629, 395, 3, 2, UNI_LB__GL } /* lb=gl */, + { 0, 184, 3254, 2, 17, UNI_RI } /* isregionalindicator */, + { 1, 8233, 7302, 7, 9, UNI_NBAT } /* script=nabataean */, + { 1, 1497, 1410, 9, 13, UNI_M } /* category=combiningmark */, + { 0, 6885, 2128, 3, 3, UNI_HAN } /* ishani */, + { 0, 1757, 9433, 22, 4, UNI_CWL } /* changeswhenlowercased=true */, + { 1, 184, 3837, 3, 6, UNI_CPRT } /* iscypriot */, + { 0, 3671, 9345, 17, 4, UNI_RJNG } /* scriptextensions=rjng */, + { 10, 3671, 9481, 17, 4, UNI_ZANB } /* scriptextensions=zanb */, + { 1, 8424, 4792, 6, 15, UNI_INZANABAZARSQUARE } /* block=zanabazarsquare */, + { 5, 9049, 7462, 4, 1, UNI_AGE__4 } /* age=4 */, + { 0, 5760, 7555, 13, 2, UNI_NV__23 } /* numericvalue=23 */, + { 4, 8886, 3980, 3, 7, UNI_SC__LINB } /* sc=linearb */, + { 6, 9365, 9485, 4, 4, UNI_QAAI } /* scx=zinh */, + { 0, 9921, 0, 5, 0, UNI_XPOSIXPRINT } /* print */, + { 2, 184, 18, 2, 2, UNI_RI } /* isri */, + { 3, 21, 7148, 2, 10, UNI_YIRADICALS } /* inyiradicals */, + { 6, 4705, 47, 5, 1, UNI_TERM } /* isterm */, + { 1, 184, 7068, 2, 10, UNI_SUPARROWSA } /* issuparrowsa */, + { 9, 1911, 4612, 22, 15, UNI_INSC__MODIFYINGLETTER } /* indicsyllabiccategory=modifyingletter */, + { 0, 5760, 8388, 13, 5, UNI_NV__70000 } /* numericvalue=70000 */, + { 1, 3671, 8107, 17, 7, UNI_KNDA } /* scriptextensions=kannada */, + { 0, 9365, 7956, 4, 8, UNI_TAGB } /* scx=tagbanwa */, + { 0, 5003, 0, 14, 0, UNI_LATINEXTB } /* latinextendedb */, + { 0, 1735, 3, 22, 1, -UNI_CWCM } /* changeswhencasemapped=f */, + { 4, 8149, 0, 4, 0, UNI_MULT } /* mult */, + { 2, 8424, 4267, 6, 15, UNI_BAMUMSUP } /* block=bamumsupplement */, + { 0, 184, 2169, 2, 21, UNI_MEETEIMAYEKEXT } /* ismeeteimayekextensions */, + { 8, 9097, 721, 4, 5, UNI_BPT__C } /* bpt=close */, + { 0, 5339, 1164, 14, 2, UNI_LB__LF } /* sentencebreak=lf */, + { 3, 6816, 1531, 3, 13, UNI_BYZANTINEMUSIC } /* inbyzantinemusic */, + { 0, 8332, 15, 4, 2, UNI_ARAB } /* isarab */, + { 5, 8219, 0, 7, 0, UNI_patsyn_values_index } /* patsyn= */, + { 2, 8424, 1576, 6, 23, UNI_GEOMETRICSHAPESEXT } /* block=geometricshapesextended */, + { 7, 8886, 2085, 3, 8, UNI_SC__CYRL } /* sc=cyrillic */, + { 1, 42, 0, 9, 0, UNI_CJKCOMPAT } /* cjkcompat */, + { 0, 5565, 9477, 13, 4, UNI_JG__ZAIN } /* joininggroup=zain */, + { 6, 9946, 7942, 4, 6, UNI_SPECIALS } /* isspecials */, + { 4, 1239, 3, 25, 1, -UNI_COMPEX } /* fullcompositionexclusion=f */, + { 3, 8086, 0, 6, 0, UNI_GRBASE } /* grbase */, + { 0, 2148, 4205, 3, 5, UNI_INSYRIAC } /* insyriac */, + { 0, 21, 2232, 2, 6, UNI_YIJING } /* inyijing */, + { 0, 316, 0, 33, 0, UNI_SUPMATHOPERATORS } /* supplementalmathematicaloperators */, + { 0, 9731, 5952, 3, 3, UNI_LB__ZWJ } /* wb=zwj */, + { 1, 9781, 25, 29, 1, UNI__PERL_PROBLEMATIC_LOCALE_FOLDS } /* _perl_problematic_locale_folds */, + { 7, 4124, 0, 16, 0, UNI_MYANMAREXTB } /* myanmarextendedb */, + { 8, 9093, 8030, 4, 7, UNI_CJKEXTD } /* blk=cjkextd */, + { 2, 1801, 1, 22, 1, -UNI_CWU } /* changeswhenuppercased=n */, + { 0, 1713, 0, 21, 0, UNI_CWCF } /* changeswhencasefolded */, + { 2, 8424, 3964, 6, 16, UNI_LATIN1 } /* block=latin1supplement */, + { 2, 9647, 8354, 3, 3, UNI_NV__600 } /* nv=600 */, + { 0, 1911, 1553, 22, 23, UNI_INSC__CONSONANTPRECEDINGREPHA } /* indicsyllabiccategory=consonantprecedingrepha */, + { 6, 8854, 26, 5, 1, UNI_DASH } /* dash=y */, + { 0, 9049, 9689, 4, 3, UNI_AGE__4 } /* age=v40 */, + { 0, 8233, 7356, 7, 4, UNI_PALM } /* script=palm */, + { 0, 9321, 0, 4, 0, UNI_PHNX } /* phnx */, + { 2, 6918, 58, 10, 2, UNI_LB__ID } /* linebreak=id */, + { 0, 8496, 26, 6, 1, UNI_CWKCF } /* cwkcf=y */, + { 0, 1668, 0, 23, 0, UNI_SUPPUNCTUATION } /* supplementalpunctuation */, + { 3, 9599, 9734, 3, 3, UNI_CI } /* ci=yes */, + { 0, 8934, 0, 5, 0, UNI_RUNR } /* runic */, + { 0, 2453, 0, 19, 0, UNI_TERM } /* terminalpunctuation */, + { 1, 4447, 8574, 15, 6, UNI_EA__NA } /* eastasianwidth=narrow */, + { 11, 9365, 9181, 4, 4, UNI_HLUW } /* scx=hluw */, + { 5, 2708, 7774, 4, 6, UNI_INARMENIAN } /* inarmenian */, + { 2, 184, 9337, 2, 4, UNI_QAAI } /* isqaai */, + { 0, 9093, 6382, 4, 6, UNI_DOMINO } /* blk=domino */, + { 1, 1536, 3039, 3, 7, UNI_INETHIOPIC } /* inethiopic */, + { 2, 9623, 5692, 3, 3, UNI_JG__TAW } /* jg=taw */, + { 0, 9599, 8864, 3, 5, -UNI_CI } /* ci=false */, + { 1, 9113, 7571, 4, 2, UNI_CCC__33 } /* ccc=33 */, + { 0, 2333, 0, 13, 0, UNI_GLAGOLITICSUP } /* glagoliticsup */, + { 0, 9731, 400, 3, 6, UNI_WB__FO } /* wb=format */, + { 0, 8233, 8107, 7, 7, UNI_SC__KNDA } /* script=kannada */, + { 0, 9401, 0, 4, 0, UNI_TALE } /* tale */, + { 0, 9365, 6646, 4, 11, UNI_HMNG } /* scx=pahawhhmong */, + { 1, 7018, 7668, 10, 3, UNI_IN__6_DOT_2 } /* presentin=6.2 */, + { 2, 8233, 2006, 7, 4, UNI_SC__MODI } /* script=modi */, + { 0, 8135, 0, 7, 0, UNI_MAND } /* mandaic */, + { 2, 8886, 2333, 3, 10, UNI_SC__GLAG } /* sc=glagolitic */, + { 0, 7900, 0, 8, 0, UNI_KANAEXTA } /* kanaexta */, + { 4, 9623, 5097, 3, 4, UNI_JG__BETH } /* jg=beth */, + { 8, 8424, 5872, 7, 11, UNI_CYRILLICEXTA } /* block=cyrillicexta */, + { 3, 9365, 8262, 5, 3, UNI_SOYO } /* scx=soyo */, + { 4, 5760, 8354, 13, 2, UNI_NV__60 } /* numericvalue=60 */, + { 1, 9629, 2368, 3, 2, UNI_LB__HL } /* lb=hl */, + { 0, 9093, 3756, 4, 16, UNI_ARABICSUP } /* blk=arabicsupplement */, + { 2, 8424, 5617, 6, 9, UNI_INMALAYALAM } /* block=malayalam */, + { 0, 8871, 495, 3, 2, UNI_SB__NU } /* sb=nu */, + { 5, 1911, 7780, 22, 8, UNI_INSC__AVAGRAHA } /* indicsyllabiccategory=avagraha */, + { 1, 8233, 8919, 7, 5, UNI_OGAM } /* script=ogham */, + { 9, 9605, 45, 3, 3, UNI_DT__COM } /* dt=com */, + { 12, 9623, 5241, 3, 14, UNI_JG__NOJOININGGROUP } /* jg=nojoininggroup */, + { 0, 3671, 9337, 17, 4, UNI_QAAI } /* scriptextensions=qaai */, + { 8, 8886, 8568, 3, 4, UNI_LYDI } /* sc=lydi */, + { 0, 5565, 6547, 13, 11, UNI_JG__MALAYALAMRA } /* joininggroup=malayalamra */, + { 3, 184, 8550, 2, 6, UNI_LEPC } /* islepcha */, + { 2, 9909, 4828, 7, 6, UNI_POSIXXDIGIT } /* isposixxdigit */, + { 0, 1851, 0, 16, 0, UNI_INDICNUMBERFORMS } /* indicnumberforms */, + { 0, 9113, 7495, 4, 1, UNI_CCC__7 } /* ccc=7 */, + { 5, 6316, 0, 11, 0, UNI_idc_values_index } /* idcontinue= */, + { 0, 8635, 26, 5, 1, UNI_IDEO } /* ideo=y */, + { 0, 5835, 995, 12, 2, -UNI_BIDIC } /* bidicontrol=no */, + { 1, 21, 9233, 2, 4, UNI_LISU } /* inlisu */, + { 0, 8886, 8622, 3, 6, UNI_SC__TELU } /* sc=telugu */, + { 1, 5760, 8674, 13, 5, UNI_NV__11_SLASH_12 } /* numericvalue=11/12 */, + { 0, 3671, 3984, 18, 3, UNI_SARB } /* scriptextensions=sarb */, + { 0, 5760, 9018, 13, 3, UNI_NV__7_SLASH_2 } /* numericvalue=7/2 */, + { 1, 184, 7804, 2, 8, UNI_BUGI } /* isbuginese */, + { 1, 5565, 4947, 13, 14, UNI_JG__HAMZAONHEHGOAL } /* joininggroup=hamzaonhehgoal */, + { 1, 9049, 9704, 4, 3, UNI_AGE__6 } /* age=v60 */, + { 1, 9333, 0, 4, 0, UNI_COPT } /* qaac */, + { 2, 4778, 3026, 3, 3, UNI_UGAR } /* isugar */, + { 2, 1911, 0, 22, 0, UNI_insc_values_index } /* indicsyllabiccategory= */, + { 1, 4172, 0, 16, 0, UNI_SUPMATHOPERATORS } /* supmathoperators */, + { 0, 9093, 4268, 5, 14, UNI_BAMUMSUP } /* blk=bamumsupplement */, + { 0, 9093, 283, 4, 33, UNI_MISCMATHSYMBOLSB } /* blk=miscellaneousmathematicalsymbolsb */, + { 1, 8424, 6558, 6, 11, UNI_INMEDEFAIDRIN } /* block=medefaidrin */, + { 9, 9647, 8989, 3, 3, UNI_NV__1_SLASH_8 } /* nv=1/8 */, + { 8, 6816, 5590, 3, 7, UNI_INBALINESE } /* inbalinese */, + { 2, 1362, 24, 24, 1, UNI_CCC__L } /* canonicalcombiningclass=l */, + { 16, 9093, 78, 4, 10, UNI_ARABICMATH } /* blk=arabicmath */, + { 0, 599, 0, 30, 0, UNI_CJKEXTD } /* cjkunifiedideographsextensiond */, + { 1, 6885, 7861, 3, 7, UNI_HIRA } /* ishiragana */, + { 0, 9365, 1085, 4, 4, UNI_HANG } /* scx=hang */, + { 3, 9909, 25, 3, 1, UNI_PS } /* isps */, + { 0, 8424, 7860, 6, 8, UNI_INHIRAGANA } /* block=hiragana */, + { 1, 9193, 7401, 4, 9, UNI_GCB__V } /* hst=voweljamo */, + { 1, 5760, 8985, 13, 3, UNI_NV__1_SLASH_6 } /* numericvalue=1/6 */, + { 0, 9093, 5283, 4, 14, UNI_PHONETICEXTSUP } /* blk=phoneticextsup */, + { 6, 3671, 9109, 17, 4, UNI_CANS } /* scriptextensions=cans */, + { 3, 184, 62, 2, 5, UNI_XPOSIXGRAPH } /* isgraph */, + { 1, 1497, 133, 9, 4, UNI_M } /* category=mark */, + { 0, 184, 218, 3, 32, UNI_DIACRITICALSEXT } /* iscombiningdiacriticalmarksextended */, + { 5, 9105, 0, 4, 0, UNI_CAKM } /* cakm */, + { 0, 9093, 2211, 4, 7, UNI_INSINHALA } /* blk=sinhala */, + { 2, 9093, 1599, 4, 23, UNI_COMPATJAMO } /* blk=hangulcompatibilityjamo */, + { 4, 3868, 6360, 16, 11, UNI_CASEDLETTER } /* generalcategory=casedletter */, + { 0, 9093, 5552, 4, 13, UNI_IPAEXT } /* blk=ipaextensions */, + { 4, 3948, 922, 3, 17, UNI_INVS } /* invariationselectors */, + { 0, 8424, 114, 7, 24, UNI_DIACRITICALS } /* block=combiningdiacriticalmarks */, + { 4, 5760, 7631, 13, 1, UNI_NV__9 } /* numericvalue=9 */, + { 13, 9647, 9506, 3, 3, UNI_NV__2_SLASH_3 } /* nv=2/3 */, + { 4, 184, 6569, 2, 11, UNI_MISCSYMBOLS } /* ismiscsymbols */, + { 3, 7128, 1767, 10, 2, UNI_WB__NL } /* wordbreak=nl */, + { 1, 9361, 0, 4, 0, UNI_SARB } /* sarb */, + { 0, 400, 0, 6, 0, UNI_CF } /* format */, + { 0, 1158, 4718, 3, 7, UNI_TAMILSUP } /* intamilsup */, + { 0, 21, 6027, 2, 5, UNI_INKHMER } /* inkhmer */, + { 0, 8886, 9385, 3, 4, UNI_SC__SHRD } /* sc=shrd */, + { 3, 5760, 9557, 13, 3, UNI_NV__3_SLASH_5 } /* numericvalue=3/5 */, + { 0, 3671, 9253, 17, 4, UNI_MIAO } /* scriptextensions=miao */, + { 0, 3671, 8093, 17, 7, UNI_HANO } /* scriptextensions=hanunoo */, + { 1, 8616, 8864, 6, 5, -UNI_STERM } /* sterm=false */, + { 0, 8869, 9433, 5, 4, UNI_IDSB } /* idsb=true */, + { 4, 5325, 9433, 14, 4, UNI_QMARK } /* quotationmark=true */, + { 0, 3002, 3370, 18, 3, UNI_DT__MED } /* decompositiontype=med */, + { 9, 9093, 6382, 4, 11, UNI_DOMINO } /* blk=dominotiles */, + { 0, 9620, 1257, 3, 2, UNI_UPPERCASELETTER } /* gc=lu */, + { 0, 8424, 837, 6, 28, UNI_PHONETICEXTSUP } /* block=phoneticextensionssupplement */, + { 2, 5513, 1, 13, 1, -UNI_GRBASE } /* graphemebase=n */, + { 1, 184, 779, 2, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsupplement */, + { 6, 3772, 0, 16, 0, UNI_BOPOMOFOEXT } /* bopomofoextended */, + { 0, 9121, 1, 4, 1, -UNI_CWL } /* cwl=n */, + { 12, 6315, 36, 12, 1, UNI_XIDC } /* xidcontinue=t */, + { 2, 5492, 0, 5, 0, UNI_XPOSIXALNUM } /* alnum */, + { 1, 8424, 7078, 6, 10, UNI_SUPARROWSB } /* block=suparrowsb */, + { 1, 9113, 8730, 5, 4, UNI_CCC__17 } /* ccc=ccc17 */, + { 1, 8869, 1, 5, 1, -UNI_IDSB } /* idsb=n */, + { 1, 4462, 9433, 15, 4, UNI_GREXT } /* graphemeextend=true */, + { 0, 8424, 3092, 6, 18, UNI_INPUNCTUATION } /* block=generalpunctuation */, + { 1, 7025, 7668, 3, 3, UNI_IN__6_DOT_2 } /* in=6.2 */, + { 0, 184, 3631, 3, 3, UNI_CHAM } /* ischam */, + { 3, 8424, 7329, 6, 9, UNI_INOLDITALIC } /* block=olditalic */, + { 8, 9903, 1768, 6, 5, UNI_XPOSIXLOWER } /* xposixlower */, + { 0, 3251, 1, 3, 1, -UNI_CE } /* ce=n */, + { 5, 5760, 5409, 13, 9, UNI_NV__100000000 } /* numericvalue=100000000 */, + { 0, 5325, 1, 14, 1, -UNI_QMARK } /* quotationmark=n */, + { 1, 2703, 26, 19, 1, UNI_IDST } /* idstrinaryoperator=y */, + { 1, 9049, 7463, 4, 1, UNI_AGE__3 } /* age=3 */, + { 9, 8424, 893, 6, 28, UNI_SUPPUAB } /* block=supplementaryprivateuseareab */, + { 8, 8886, 2984, 3, 6, UNI_SC__COPT } /* sc=coptic */, + { 4, 3671, 7995, 17, 7, UNI_AVST } /* scriptextensions=avestan */, + { 0, 3671, 8610, 17, 6, UNI_RJNG } /* scriptextensions=rejang */, + { 5, 9093, 808, 4, 29, UNI_MISCARROWS } /* blk=miscellaneoussymbolsandarrows */, + { 1, 9659, 26, 3, 1, UNI_RI } /* ri=y */, + { 1, 3980, 0, 16, 0, UNI_LINEARBIDEOGRAMS } /* linearbideograms */, + { 5, 9093, 1845, 4, 22, UNI_INDICNUMBERFORMS } /* blk=commonindicnumberforms */, + { 2, 6171, 0, 12, 0, UNI_MATHALPHANUM } /* mathalphanum */, + { 2, 1410, 0, 24, 0, UNI_DIACRITICALSFORSYMBOLS } /* combiningmarksforsymbols */, + { 1, 184, 382, 2, 4, UNI_EGYP } /* isegyp */, + { 0, 9093, 3020, 4, 18, UNI_DEVANAGARIEXT } /* blk=devanagariextended */, + { 4, 749, 0, 30, 0, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* symbolsandpictographsextendeda */, + { 8, 9093, 5449, 5, 12, UNI_BLOCKELEMENTS } /* blk=blockelements */, + { 6, 184, 3519, 3, 16, UNI_CYRILLICEXTB } /* iscyrillicextendedb */, + { 0, 5565, 3620, 13, 17, UNI_JG__MANICHAEANDHAMEDH } /* joininggroup=manichaeandhamedh */, + { 1, 9113, 9530, 4, 3, UNI_CCC__AL } /* ccc=228 */, + { 1, 9629, 9310, 3, 2, UNI_LB__SG } /* lb=sg */, + { 0, 6918, 5520, 10, 5, UNI_LB__EB } /* linebreak=ebase */, + { 5, 9623, 4552, 3, 15, UNI_JG__MANICHAEANSADHE } /* jg=manichaeansadhe */, + { 0, 3739, 9734, 17, 3, UNI_UIDEO } /* unifiedideograph=yes */, + { 1, 9153, 4797, 5, 2, UNI_WB__EB } /* gcb=gaz */, + { 0, 9909, 1768, 7, 5, UNI_POSIXLOWER } /* isposixlower */, + { 9, 8424, 9057, 6, 4, UNI_INAHOM } /* block=ahom */, + { 1, 184, 5884, 3, 11, UNI_CYRILLICEXTB } /* iscyrillicextb */, + { 1, 5565, 6909, 14, 9, UNI_JG__KNOTTEDHEH } /* joininggroup=knottedheh */, + { 1, 4108, 0, 16, 0, UNI_MYANMAREXTA } /* myanmarextendeda */, + { 3, 1084, 995, 26, 2, -UNI_CWKCF } /* changeswhennfkccasefolded=no */, + { 3, 5227, 0, 15, 0, UNI_DT__CAN } /* nfdquickcheck=n */, + { 0, 184, 8065, 2, 4, UNI_ELBA } /* iselba */, + { 0, 9093, 3469, 4, 4, UNI_UCAS } /* blk=ucas */, + { 0, 8086, 9734, 7, 3, UNI_GRBASE } /* grbase=yes */, + { 15, 8886, 78, 3, 4, UNI_SC__ARAB } /* sc=arab */, + { 3, 8854, 3, 5, 1, -UNI_DASH } /* dash=f */, + { 5, 8424, 6869, 7, 9, UNI_COMPATJAMO } /* block=compatjamo */, + { 0, 9093, 4124, 4, 16, UNI_MYANMAREXTB } /* blk=myanmarextendedb */, + { 1, 9365, 8107, 4, 7, UNI_KNDA } /* scx=kannada */, + { 8, 8424, 2021, 6, 22, UNI_TRANSPORTANDMAP } /* block=transportandmapsymbols */, + { 1, 1482, 4434, 4, 13, UNI_DIACRITICALSSUP } /* indiacriticalssup */, + { 0, 8886, 1622, 3, 5, UNI_SC__LATN } /* sc=latin */, + { 0, 1156, 0, 2, 0, UNI_PO } /* po */, + { 8, 9093, 2401, 4, 3, UNI_PUA } /* blk=pua */, + { 0, 21, 977, 3, 16, UNI_ANCIENTGREEKMUSIC } /* inancientgreekmusic */, + { 9, 5760, 8394, 13, 3, UNI_NV__800 } /* numericvalue=800 */, + { 1, 8884, 8909, 5, 5, UNI_INSC__NUKTA } /* insc=nukta */, + { 2, 9365, 2741, 4, 4, UNI_MERO } /* scx=mero */, + { 1, 8233, 9473, 7, 4, UNI_SC__YI } /* script=yiii */, + { 1, 8424, 6712, 6, 11, UNI_SUPERANDSUB } /* block=superandsub */, + { 3, 3002, 4351, 18, 6, UNI_DT__MED } /* decompositiontype=medial */, + { 0, 9093, 3980, 4, 16, UNI_LINEARBIDEOGRAMS } /* blk=linearbideograms */, + { 1, 8874, 9433, 5, 4, UNI_IDST } /* idst=true */, + { 0, 9620, 4140, 3, 16, UNI_PO } /* gc=otherpunctuation */, + { 1, 6194, 6989, 3, 9, UNI_INOLDSOGDIAN } /* inoldsogdian */, + { 0, 9089, 0, 4, 0, UNI_BHKS } /* bhks */, + { 0, 8886, 8072, 3, 7, UNI_ELYM } /* sc=elymaic */, + { 9, 1801, 9433, 22, 4, UNI_CWU } /* changeswhenuppercased=true */, + { 2, 878, 0, 14, 0, UNI_PUA } /* privateusearea */, + { 2, 5565, 6087, 13, 12, UNI_JG__MALAYALAMNGA } /* joininggroup=malayalamnga */, + { 0, 4462, 0, 15, 0, UNI_grext_values_index } /* graphemeextend= */, + { 2, 4826, 36, 9, 1, UNI_XPOSIXXDIGIT } /* hexdigit=t */, + { 4, 1779, 0, 22, 0, UNI_cwt_values_index } /* changeswhentitlecased= */, + { 4, 9093, 328, 4, 21, UNI_MATHOPERATORS } /* blk=mathematicaloperators */, + { 4, 9113, 8358, 4, 2, UNI_CCC__30 } /* ccc=30 */, + { 17, 7239, 5969, 4, 4, UNI_INHEBREW } /* inhebrew */, + { 1, 5760, 9572, 13, 3, UNI_NV__5_SLASH_8 } /* numericvalue=5/8 */, + { 0, 2106, 0, 21, 0, UNI_gcb_values_index } /* graphemeclusterbreak= */, + { 11, 9647, 8376, 3, 6, UNI_NV__500000 } /* nv=500000 */, + { 2, 3671, 8892, 17, 4, UNI_PHLI } /* scriptextensions=phli */, + { 1, 9093, 7852, 4, 8, UNI_INGURMUKHI } /* blk=gurmukhi */, + { 0, 9626, 6745, 3, 11, UNI_JT__T } /* jt=transparent */, + { 4, 8886, 6978, 3, 10, UNI_XPEO } /* sc=oldpersian */, + { 0, 9946, 47, 3, 1, UNI_SM } /* issm */, + { 11, 8424, 8562, 6, 6, UNI_INLYCIAN } /* block=lycian */, + { 2, 2457, 5802, 5, 9, UNI_ALPHABETICPF } /* inalphabeticpf */, + { 0, 3251, 0, 3, 0, UNI_ce_values_index } /* ce= */, + { 1, 6005, 150, 4, 33, UNI_DIACRITICALSSUP } /* incombiningdiacriticalmarkssupplement */, + { 1, 9113, 8646, 4, 6, UNI_CCC__9 } /* ccc=virama */, + { 0, 9093, 6492, 4, 11, UNI_KATAKANAEXT } /* blk=katakanaext */, + { 0, 3671, 9133, 17, 4, UNI_CYRL } /* scriptextensions=cyrl */, + { 9, 184, 5591, 2, 13, UNI_ZL } /* islineseparator */, + { 1, 9647, 5409, 3, 8, UNI_NV__10000000 } /* nv=10000000 */, + { 0, 3671, 9145, 17, 4, UNI_DSRT } /* scriptextensions=dsrt */, + { 8, 9864, 436, 7, 4, UNI__PERL_NCHAR } /* _perl_nchar */, + { 24, 9629, 1156, 3, 2, UNI_LB__PO } /* lb=po */, + { 0, 8424, 749, 6, 30, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* block=symbolsandpictographsextendeda */, + { 1, 6828, 2013, 10, 3, UNI_BC__RLE } /* bidiclass=rle */, + { 15, 184, 9201, 2, 4, UNI_KHMR } /* iskhmr */, + { 0, 8635, 36, 5, 1, UNI_IDEO } /* ideo=t */, + { 0, 7025, 9722, 3, 3, UNI_IN__9 } /* in=v90 */, + { 0, 9909, 2495, 3, 3, UNI_PRTI } /* isprti */, + { 7, 8233, 2085, 7, 8, UNI_SC__CYRL } /* script=cyrillic */, + { 3, 9629, 2564, 3, 2, UNI_LB__BA } /* lb=ba */, + { 1, 9153, 73, 4, 2, UNI_WB__EB } /* gcb=em */, + { 0, 1158, 4221, 3, 5, UNI_INTANGUT } /* intangut */, + { 2, 184, 8502, 2, 6, UNI_GOTH } /* isgothic */, + { 1, 8424, 1162, 6, 26, UNI_HALFANDFULLFORMS } /* block=halfwidthandfullwidthforms */, + { 0, 5760, 8358, 13, 3, UNI_NV__300 } /* numericvalue=300 */, + { 0, 9946, 0, 7, 0, UNI_XPOSIXSPACE } /* isspace */, + { 0, 9093, 5578, 4, 13, UNI_KANAEXTA } /* blk=kanaextendeda */, + { 0, 4447, 1174, 15, 9, UNI_EA__F } /* eastasianwidth=fullwidth */, + { 3, 9093, 7356, 4, 9, UNI_PALM } /* blk=palmyrene */, + { 7, 9909, 1574, 3, 3, UNI_PHAG } /* isphag */, + { 1, 8424, 1576, 6, 15, UNI_GEOMETRICSHAPES } /* block=geometricshapes */, + { 4, 837, 0, 18, 0, UNI_PHONETICEXT } /* phoneticextensions */, + { 0, 9113, 7540, 4, 3, UNI_WB__EB } /* ccc=200 */, + { 0, 4241, 3022, 4, 16, UNI_DEVANAGARIEXT } /* indevanagariextended */, + { 2, 7420, 8864, 8, 5, -UNI_IDS } /* idstart=false */, + { 0, 8886, 9485, 3, 4, UNI_SC__QAAI } /* sc=zinh */, + { 2, 8886, 7804, 3, 8, UNI_SC__BUGI } /* sc=buginese */, + { 0, 9620, 4080, 3, 10, UNI_SM } /* gc=mathsymbol */, + { 1, 5835, 36, 12, 1, UNI_BIDIC } /* bidicontrol=t */, + { 3, 1713, 9433, 22, 4, UNI_CWCF } /* changeswhencasefolded=true */, + { 0, 184, 4975, 2, 7, UNI_KANASUP } /* iskanasup */, + { 2, 1458, 0, 24, 0, UNI_HIGHPUSURROGATES } /* highprivateusesurrogates */, + { 0, 9629, 495, 3, 2, UNI_LB__NU } /* lb=nu */, + { 1, 6679, 3, 11, 1, -UNI_SD } /* softdotted=f */, + { 4, 8332, 3417, 3, 9, UNI_ALCHEMICAL } /* isalchemical */, + { 9, 7230, 3, 9, 1, -UNI_EXT } /* extender=f */, + { 17, 8233, 1482, 8, 3, UNI_SC__SIND } /* script=sind */, + { 7, 7018, 9437, 10, 4, UNI_IN__10 } /* presentin=v100 */, + { 0, 2204, 4659, 4, 13, UNI_NARB } /* isoldnortharabian */, + { 8, 9623, 6097, 3, 5, UNI_JG__GAMAL } /* jg=gamal */, + { 0, 8233, 7375, 8, 8, UNI_SAMR } /* script=samaritan */, + { 4, 8424, 630, 7, 29, UNI_CJKEXTE } /* block=cjkunifiedideographsextensione */, + { 0, 9125, 3, 4, 1, -UNI_CWT } /* cwt=f */, + { 0, 9901, 7420, 3, 7, UNI_XIDS } /* isxidstart */, + { 1, 9365, 8628, 4, 6, UNI_THAA } /* scx=thaana */, + { 5, 3671, 8149, 17, 4, UNI_MULT } /* scriptextensions=mult */, + { 4, 5565, 1456, 13, 3, UNI_JG__HAH } /* joininggroup=hah */, + { 20, 5760, 7484, 13, 8, UNI_NV__1_SLASH_64 } /* numericvalue=1.56e-02 */, + { 8, 9623, 726, 3, 3, UNI_JG__DAL } /* jg=dal */, + { 0, 5565, 6123, 13, 12, UNI_JG__MALAYALAMSSA } /* joininggroup=malayalamssa */, + { 2, 5565, 4038, 13, 3, UNI_JG__LAM } /* joininggroup=lam */, + { 3, 7025, 9710, 3, 3, UNI_IN__6_DOT_2 } /* in=v62 */, + { 10, 3254, 1, 18, 1, -UNI_RI } /* regionalindicator=n */, + { 0, 9093, 6171, 4, 12, UNI_MATHALPHANUM } /* blk=mathalphanum */, + { 1, 9365, 8526, 4, 6, UNI_KTHI } /* scx=kaithi */, + { 0, 1497, 4387, 9, 14, UNI_SC } /* category=currencysymbol */, + { 0, 3671, 7329, 17, 9, UNI_ITAL } /* scriptextensions=olditalic */, + { 2, 9623, 5656, 3, 13, UNI_JG__MANICHAEANNUN } /* jg=manichaeannun */, + { 0, 184, 3020, 2, 4, UNI_DEVA } /* isdeva */, + { 0, 3552, 0, 16, 0, UNI_ETHIOPICEXT } /* ethiopicextended */, + { 5, 8884, 4236, 5, 5, UNI_INSC__VOWEL } /* insc=vowel */, + { 1, 3868, 8839, 16, 5, UNI_XPOSIXCNTRL } /* generalcategory=cntrl */, + { 0, 9365, 6602, 4, 11, UNI_NAND } /* scx=nandinagari */, + { 0, 184, 2949, 3, 17, UNI_HALFMARKS } /* iscombininghalfmarks */, + { 0, 4705, 4221, 3, 15, UNI_TANGUTCOMPONENTS } /* istangutcomponents */, + { 0, 8233, 4108, 7, 7, UNI_SC__MYMR } /* script=myanmar */, + { 1, 184, 8894, 2, 4, UNI_LIMB } /* islimb */, + { 1, 8233, 8892, 7, 4, UNI_PHLI } /* script=phli */, + { 2, 184, 4417, 2, 15, UNI_DIACRITICALSEXT } /* isdiacriticalsext */, + { 1, 5760, 7444, 13, 8, UNI_NV__1_SLASH_8 } /* numericvalue=1.25e-01 */, + { 10, 9623, 341, 3, 2, UNI_JG__PE } /* jg=pe */, + { 0, 8424, 7068, 6, 10, UNI_SUPARROWSA } /* block=suparrowsa */, + { 8, 3671, 5617, 17, 9, UNI_MLYM } /* scriptextensions=malayalam */, + { 5, 9946, 44, 3, 1, UNI_SK } /* issk */, + { 1, 8884, 2966, 5, 18, UNI_INSC__CONSONANTSUBJOINED } /* insc=consonantsubjoined */, + { 3, 1911, 4891, 22, 14, UNI_INSC__CONSONANTFINAL } /* indicsyllabiccategory=consonantfinal */, + { 0, 8886, 9169, 3, 4, UNI_SC__GUJR } /* sc=gujr */, + { 11, 7025, 9575, 3, 3, UNI_IN__6_DOT_1 } /* in=6.1 */, + { 1, 1362, 8765, 25, 4, UNI_CCC__24 } /* canonicalcombiningclass=ccc24 */, + { 2, 567, 0, 2, 0, UNI_NB } /* nb */, + { 0, 9093, 8652, 4, 6, UNI_INWANCHO } /* blk=wancho */, + { 2, 9365, 9297, 4, 4, UNI_OLCK } /* scx=olck */, + { 1, 2148, 4173, 3, 15, UNI_SUPMATHOPERATORS } /* insupmathoperators */, + { 0, 184, 2855, 2, 19, UNI_SUPARROWSA } /* issupplementalarrowsa */, + { 9, 9659, 36, 3, 1, UNI_RI } /* ri=t */, + { 1, 9923, 7966, 4, 6, UNI_INTIFINAGH } /* intifinagh */, + { 0, 8884, 698, 5, 6, UNI_INSC__NUMBER } /* insc=number */, + { 0, 6338, 0, 11, 0, UNI_alpha_values_index } /* alphabetic= */, + { 0, 7230, 995, 9, 2, -UNI_EXT } /* extender=no */, + { 2, 7025, 7631, 3, 1, UNI_IN__9 } /* in=9 */, + { 1, 9901, 467, 8, 5, UNI_XPOSIXPUNCT } /* isxposixpunct */, + { 0, 1779, 36, 22, 1, UNI_CWT } /* changeswhentitlecased=t */, + { 0, 5031, 0, 14, 0, UNI_LATINEXTD } /* latinextendedd */, + { 0, 2106, 24, 21, 1, UNI_GCB__L } /* graphemeclusterbreak=l */, + { 0, 184, 4402, 2, 4, UNI_DASH } /* isdash */, + { 0, 4849, 9734, 14, 3, UNI_CI } /* caseignorable=yes */, + { 1, 8886, 2006, 3, 4, UNI_SC__MODI } /* sc=modi */, + { 6, 5565, 6536, 13, 11, UNI_JG__MALAYALAMJA } /* joininggroup=malayalamja */, + { 1, 8100, 0, 6, 0, UNI_HYPHEN } /* hyphen */, + { 2, 9093, 3020, 4, 13, UNI_DEVANAGARIEXT } /* blk=devanagariext */, + { 1, 6918, 5773, 10, 13, UNI_LB__PR } /* linebreak=prefixnumeric */, + { 2, 9365, 8149, 4, 4, UNI_MULT } /* scx=mult */, + { 3, 184, 6159, 2, 12, UNI_GONM } /* ismasaramgondi */, + { 4, 8233, 5617, 7, 9, UNI_SC__MLYM } /* script=malayalam */, + { 0, 7108, 995, 10, 2, -UNI_XPOSIXUPPER } /* uppercase=no */, + { 0, 3671, 6648, 18, 3, UNI_SHAW } /* scriptextensions=shaw */, + { 6, 184, 2086, 3, 20, UNI_CYRILLICSUP } /* iscyrillicsupplementary */, + { 4, 9620, 5487, 3, 13, UNI_XPOSIXDIGIT } /* gc=decimalnumber */, + { 2, 6567, 1968, 6, 9, UNI_MISCTECHNICAL } /* inmisctechnical */, + { 8, 8233, 1085, 7, 4, UNI_SC__HANG } /* script=hang */, + { 12, 8871, 836, 3, 2, UNI_SB__SP } /* sb=sp */, + { 8, 6838, 0, 10, 0, UNI_BOXDRAWING } /* boxdrawing */, + { 1, 9599, 995, 3, 2, -UNI_CI } /* ci=no */, + { 9, 5835, 0, 11, 0, UNI_BIDIC } /* bidicontrol */, + { 2, 3671, 6898, 17, 10, UNI_KHAR } /* scriptextensions=kharoshthi */, + { 0, 8424, 878, 6, 10, UNI_PUA } /* block=privateuse */, + { 1, 5979, 26, 12, 1, UNI_IDEO } /* ideographic=y */, + { 18, 6194, 7339, 3, 8, UNI_INOLDPERMIC } /* inoldpermic */, + { 1, 1136, 9433, 26, 4, UNI_DI } /* defaultignorablecodepoint=true */, + { 0, 9093, 7266, 4, 9, UNI_LATINEXTC } /* blk=latinextc */, + { 10, 9049, 7724, 4, 3, UNI_AGE__8 } /* age=8.0 */, + { 8, 8009, 0, 7, 0, UNI_CJKEXTA } /* cjkexta */, + { 8, 9049, 7098, 4, 10, UNI_AGE__NA } /* age=unassigned */, + { 3, 1924, 4509, 11, 13, UNI_LOWERCASELETTER } /* category=lowercaseletter */, + { 0, 6918, 21, 10, 2, UNI_LB__IN } /* linebreak=in */, + { 8, 9365, 9217, 4, 3, UNI_LAO } /* scx=lao */, + { 2, 6918, 6437, 10, 11, UNI_LB__EX } /* linebreak=exclamation */, + { 4, 9623, 9061, 3, 4, UNI_JG__ALEF } /* jg=alef */, + { 1, 5085, 8130, 4, 5, UNI_INMAKASAR } /* inmakasar */, + { 0, 9647, 8822, 3, 2, UNI_NV__35 } /* nv=35 */, + { 1, 9365, 9417, 4, 4, UNI_TFNG } /* scx=tfng */, + { 0, 1536, 3039, 3, 17, UNI_ETHIOPICSUP } /* inethiopicsupplement */, + { 0, 9113, 2379, 4, 5, UNI_CCC__R } /* ccc=right */, + { 2, 8859, 0, 5, 0, UNI_DOGR } /* dogra */, + { 8, 8233, 8135, 7, 7, UNI_SC__MAND } /* script=mandaic */, + { 1, 6768, 9474, 3, 3, UNI_YI } /* isyiii */, + { 0, 1911, 5395, 22, 14, UNI_INSC__VOWELDEPENDENT } /* indicsyllabiccategory=voweldependent */, + { 4, 2665, 0, 19, 0, UNI_JAMOEXTB } /* hanguljamoextendedb */, + { 2, 2148, 6992, 3, 6, UNI_INSOGDIAN } /* insogdian */, + { 1, 8496, 0, 5, 0, UNI_CWKCF } /* cwkcf */, + { 8, 5760, 7446, 13, 2, UNI_NV__25 } /* numericvalue=25 */, + { 1, 9647, 7572, 3, 8, UNI_NV__1_SLASH_3 } /* nv=3.33e-01 */, + { 0, 9113, 8822, 4, 2, UNI_CCC__35 } /* ccc=35 */, + { 4, 9093, 8191, 4, 7, UNI_OLCK } /* blk=olchiki */, + { 4, 8424, 7980, 6, 8, UNI_INUGARITIC } /* block=ugaritic */, + { 1, 6005, 2044, 3, 20, UNI_CJKCOMPATFORMS } /* incjkcompatibilityforms */, + { 0, 9647, 7516, 3, 8, UNI_NV__5_SLASH_2 } /* nv=2.50e+00 */, + { 5, 6316, 3, 11, 1, -UNI_IDC } /* idcontinue=f */, + { 2, 5258, 0, 11, 0, UNI_MC } /* spacingmark */, + { 0, 9629, 3248, 3, 5, UNI_LB__SP } /* lb=space */, + { 2, 184, 2608, 2, 19, UNI_EGYP } /* isegyptianhieroglyphs */, + { 0, 3868, 995, 16, 2, UNI_NO } /* generalcategory=no */, + { 0, 9620, 6360, 3, 11, UNI_CASEDLETTER } /* gc=casedletter */, + { 3, 1911, 2532, 22, 19, UNI_INSC__BRAHMIJOININGNUMBER } /* indicsyllabiccategory=brahmijoiningnumber */, + { 1, 9365, 2779, 4, 9, UNI_MONG } /* scx=mongolian */, + { 1, 3671, 2741, 17, 4, UNI_MERO } /* scriptextensions=mero */, + { 0, 9113, 7631, 4, 1, UNI_CCC__9 } /* ccc=9 */, + { 4, 5565, 7038, 13, 10, UNI_JG__REVERSEDPE } /* joininggroup=reversedpe */, + { 3, 5760, 7700, 13, 8, UNI_NV__2_SLASH_3 } /* numericvalue=6.67e-01 */, + { 2, 8424, 2253, 6, 20, UNI_INANATOLIANHIEROGLYPHS } /* block=anatolianhieroglyphs */, + { 7, 9953, 4764, 4, 6, UNI_VEDICEXT } /* isvedicext */, + { 3, 9093, 2836, 4, 12, UNI_SUNDANESESUP } /* blk=sundanesesup */, + { 0, 2169, 0, 11, 0, UNI_MTEI } /* meeteimayek */, + { 1, 9093, 5786, 4, 13, UNI_VERTICALFORMS } /* blk=verticalforms */, + { 7, 8233, 9285, 7, 3, UNI_NKO } /* script=nko */, + { 0, 8424, 5031, 6, 14, UNI_LATINEXTD } /* block=latinextendedd */, + { 0, 8622, 0, 6, 0, UNI_TELU } /* telugu */, + { 0, 8424, 2006, 6, 15, UNI_MODIFIERLETTERS } /* block=modifierletters */, + { 1, 9647, 9001, 3, 4, UNI_NV__11_SLASH_2 } /* nv=11/2 */, + { 6, 1159, 495, 3, 7, UNI_NT__NU } /* nt=numeric */, + { 0, 9121, 0, 4, 0, UNI_cwl_values_index } /* cwl= */, + { 0, 9133, 0, 4, 0, UNI_CYRL } /* cyrl */, + { 6, 8424, 988, 6, 5, UNI_MUSIC } /* block=music */, + { 1, 5760, 9584, 13, 3, UNI_NV__7_SLASH_8 } /* numericvalue=7/8 */, + { 0, 2684, 6525, 19, 3, UNI_LB__H3 } /* hangulsyllabletype=lvt */, + { 9, 8849, 8864, 5, 5, -UNI_CWCM } /* cwcm=false */, + { 0, 3671, 8628, 17, 4, UNI_THAA } /* scriptextensions=thaa */, + { 0, 9093, 2779, 4, 19, UNI_MONGOLIANSUP } /* blk=mongoliansupplement */, + { 0, 4778, 1, 3, 41, UNI_UCASEXT } /* isunifiedcanadianaboriginalsyllabicsextended */, + { 0, 9909, 2, 3, 1, UNI_PI } /* ispi */, + { 2, 9365, 9233, 4, 4, UNI_LISU } /* scx=lisu */, + { 0, 9629, 7202, 3, 2, UNI_LB__BB } /* lb=bb */, + { 1, 9365, 2837, 5, 3, UNI_SUND } /* scx=sund */, + { 6, 8424, 4124, 6, 16, UNI_MYANMAREXTB } /* block=myanmarextendedb */, + { 2, 5760, 7460, 13, 8, UNI_NV__1_SLASH_7 } /* numericvalue=1.43e-01 */, + { 0, 1911, 4236, 22, 16, UNI_INSC__VOWELINDEPENDENT } /* indicsyllabiccategory=vowelindependent */, + { 0, 8424, 2211, 6, 7, UNI_INSINHALA } /* block=sinhala */, + { 1, 184, 690, 3, 8, UNI_XSUX } /* iscuneiform */, + { 0, 6567, 187, 6, 30, UNI_MISCPICTOGRAPHS } /* inmiscellaneoussymbolsandpictographs */, + { 2, 5760, 8989, 13, 3, UNI_NV__1_SLASH_8 } /* numericvalue=1/8 */, + { 1, 6918, 1472, 10, 9, UNI_LB__SG } /* linebreak=surrogate */, + { 2, 5760, 7463, 13, 1, UNI_NV__3 } /* numericvalue=3 */, + { 0, 921, 0, 18, 0, UNI_INVS } /* variationselectors */, + { 0, 9365, 4220, 4, 4, UNI_TANG } /* scx=tang */, + { 2, 9909, 4829, 7, 5, UNI_POSIXDIGIT } /* isposixdigit */, + { 1, 6828, 9653, 10, 3, UNI_BC__PDF } /* bidiclass=pdf */, + { 0, 9365, 78, 4, 4, UNI_ARAB } /* scx=arab */, + { 9, 4580, 6185, 4, 10, UNI_INMENDEKIKAKUI } /* inmendekikakui */, + { 0, 9731, 697, 3, 2, UNI_WB__MN } /* wb=mn */, + { 0, 8233, 7341, 7, 4, UNI_SC__PERM } /* script=perm */, + { 9, 9620, 3218, 3, 18, UNI_ZP } /* gc=paragraphseparator */, + { 2, 8886, 3728, 3, 11, UNI_SGNW } /* sc=signwriting */, + { 1, 8610, 0, 6, 0, UNI_RJNG } /* rejang */, + { 0, 6005, 219, 4, 31, UNI_DIACRITICALSEXT } /* incombiningdiacriticalmarksextended */, + { 9, 9629, 5325, 3, 9, UNI_LB__QU } /* lb=quotation */, + { 0, 8233, 9289, 7, 4, UNI_NSHU } /* script=nshu */, + { 0, 8424, 3884, 6, 16, UNI_GEORGIANEXT } /* block=georgianextended */, + { 1, 8424, 660, 7, 29, UNI_CJKEXTF } /* block=cjkunifiedideographsextensionf */, + { 2, 8424, 3502, 7, 16, UNI_CYRILLICEXTA } /* block=cyrillicextendeda */, + { 15, 8065, 0, 4, 0, UNI_ELBA } /* elba */, + { 2, 3671, 8894, 17, 5, UNI_LIMB } /* scriptextensions=limbu */, + { 3, 9620, 4687, 3, 15, UNI_PS } /* gc=openpunctuation */, + { 3, 9129, 0, 4, 0, UNI_cwu_values_index } /* cwu= */, + { 2, 9946, 8276, 3, 6, UNI_SUPPUAB } /* issuppuab */, + { 0, 1622, 0, 9, 0, UNI_LATINEXTE } /* latinexte */, + { 8, 8899, 1, 5, 1, -UNI_MATH } /* math=n */, + { 4, 5565, 9641, 13, 3, UNI_JG__MIM } /* joininggroup=mim */, + { 0, 5760, 8394, 13, 5, UNI_NV__80000 } /* numericvalue=80000 */, + { 3, 184, 1530, 2, 14, UNI_BYZANTINEMUSIC } /* isbyzantinemusic */, + { 2, 7025, 7507, 3, 4, UNI_IN__12 } /* in=12.0 */, + { 1, 9093, 2043, 4, 21, UNI_CJKCOMPATFORMS } /* blk=cjkcompatibilityforms */, + { 0, 9623, 5682, 3, 13, UNI_JG__MANICHAEANTAW } /* jg=manichaeantaw */, + { 0, 6005, 3837, 3, 15, UNI_CYPRIOTSYLLABARY } /* incypriotsyllabary */, + { 2, 8508, 0, 6, 0, UNI_grext_values_index } /* grext= */, + { 1, 8424, 4267, 6, 5, UNI_INBAMUM } /* block=bamum */, + { 0, 3254, 9433, 18, 4, UNI_RI } /* regionalindicator=true */, + { 8, 9946, 2837, 3, 3, UNI_SUND } /* issund */, + { 7, 1622, 0, 5, 0, UNI_LATN } /* latin */, + { 4, 9909, 6268, 3, 7, UNI_PHAISTOS } /* isphaistos */, + { 0, 7025, 9707, 3, 3, UNI_IN__6_DOT_1 } /* in=v61 */, + { 1, 9629, 7138, 3, 10, UNI_LB__WJ } /* lb=wordjoiner */, + { 5, 8586, 0, 7, 0, UNI_COMPEX } /* nfcqc=n */, + { 0, 8424, 8699, 6, 5, UNI_INBATAK } /* block=batak */, + { 2, 9593, 8, 3, 2, UNI_BC__AN } /* bc=an */, + { 1, 9629, 202, 3, 2, UNI_LB__SA } /* lb=sa */, + { 0, 5760, 7452, 13, 8, UNI_NV__1_SLASH_80 } /* numericvalue=1.25e-02 */, + { 6, 4705, 2221, 3, 3, UNI_THAI } /* isthai */, + { 0, 3671, 9117, 17, 4, UNI_CPRT } /* scriptextensions=cprt */, + { 2, 2106, 34, 21, 6, UNI_GCB__EX } /* graphemeclusterbreak=extend */, + { 1, 1713, 3, 22, 1, -UNI_CWCF } /* changeswhencasefolded=f */, + { 2, 5760, 8370, 13, 6, UNI_NV__432000 } /* numericvalue=432000 */, + { 1, 4618, 2335, 4, 8, UNI_INGLAGOLITIC } /* inglagolitic */, + { 4, 1362, 8780, 25, 4, UNI_CCC__27 } /* canonicalcombiningclass=ccc27 */, + { 7, 5760, 9017, 13, 4, UNI_NV__17_SLASH_2 } /* numericvalue=17/2 */, + { 2, 184, 5003, 2, 14, UNI_LATINEXTB } /* islatinextendedb */, + { 3, 9093, 509, 4, 20, UNI_CJK } /* blk=cjkunifiedideographs */, + { 0, 9093, 0, 4, 42, UNI_UCASEXT } /* blk=unifiedcanadianaboriginalsyllabicsextended */, + { 0, 8424, 8628, 6, 6, UNI_INTHAANA } /* block=thaana */, + { 8, 42, 0, 36, 0, UNI_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatibilityideographssupplement */, + { 8, 184, 6183, 2, 12, UNI_MEND } /* ismendekikakui */, + { 4, 6005, 4388, 3, 14, UNI_CURRENCYSYMBOLS } /* incurrencysymbols */, + { 0, 5435, 36, 13, 1, UNI_BIDIM } /* bidimirrored=t */, + { 1, 1735, 26, 22, 1, UNI_CWCM } /* changeswhencasemapped=y */, + { 1, 1497, 406, 9, 7, UNI_XPOSIXCNTRL } /* category=control */, + { 1, 9093, 3020, 4, 10, UNI_INDEVANAGARI } /* blk=devanagari */, + { 0, 6005, 2086, 3, 17, UNI_CYRILLICSUP } /* incyrillicsupplement */, + { 8, 6828, 5811, 10, 12, UNI_BC__AL } /* bidiclass=arabicletter */, + { 14, 9946, 4205, 3, 5, UNI_SYRC } /* issyriac */, + { 0, 9365, 7239, 4, 9, UNI_QAAI } /* scx=inherited */, + { 0, 8233, 9293, 7, 4, UNI_OGAM } /* script=ogam */, + { 0, 1159, 11, 3, 2, UNI_NT__DI } /* nt=di */, + { 1, 6005, 630, 3, 29, UNI_CJKEXTE } /* incjkunifiedideographsextensione */, + { 10, 6005, 3631, 3, 3, UNI_INCHAM } /* incham */, + { 3, 3671, 3110, 17, 4, UNI_GEOR } /* scriptextensions=geor */, + { 3, 6558, 0, 11, 0, UNI_MEDF } /* medefaidrin */, + { 1, 6828, 3569, 10, 17, UNI_BC__ES } /* bidiclass=europeanseparator */, + { 0, 9605, 9665, 3, 3, UNI_DT__SML } /* dt=sml */, + { 1, 9485, 0, 4, 0, UNI_QAAI } /* zinh */, + { 0, 8634, 3, 6, 1, -UNI_UIDEO } /* uideo=f */, + { 1, 8954, 9433, 5, 4, UNI_XIDC } /* xidc=true */, + { 4, 1084, 1, 26, 1, -UNI_CWKCF } /* changeswhennfkccasefolded=n */, + { 0, 9909, 468, 3, 4, UNI_P } /* ispunct */, + { 16, 9365, 6988, 4, 10, UNI_SOGO } /* scx=oldsogdian */, + { 0, 4580, 4109, 3, 15, UNI_MYANMAREXTA } /* inmyanmarextendeda */, + { 0, 3671, 4582, 17, 15, UNI_MERC } /* scriptextensions=meroiticcursive */, + { 1, 184, 5255, 2, 14, UNI_MN } /* isnonspacingmark */, + { 1, 9093, 2646, 4, 19, UNI_JAMOEXTA } /* blk=hanguljamoextendeda */, + { 6, 8886, 8135, 3, 7, UNI_SC__MAND } /* sc=mandaic */, + { 4, 7018, 9677, 10, 3, UNI_IN__2_DOT_1 } /* presentin=v21 */, + { 20, 9113, 8481, 4, 3, UNI_WB__EB } /* ccc=133 */, + { 17, 3671, 9413, 17, 4, UNI_TAVT } /* scriptextensions=tavt */, + { 0, 8586, 0, 6, 0, UNI_nfcqc_values_index } /* nfcqc= */, + { 2, 8233, 8002, 7, 7, UNI_SC__BENG } /* script=bengali */, + { 2, 8016, 0, 7, 0, UNI_CJKEXTB } /* cjkextb */, + { 0, 9629, 4357, 3, 15, UNI_LB__CB } /* lb=contingentbreak */, + { 0, 414, 0, 11, 0, UNI_IDEO } /* ideographic */, + { 10, 8233, 8430, 7, 6, UNI_CARI } /* script=carian */, + { 11, 9365, 8484, 4, 6, UNI_CAKM } /* scx=chakma */, + { 1, 5760, 8664, 13, 4, UNI_NV__1_SLASH_16 } /* numericvalue=1/16 */, + { 0, 9093, 8296, 4, 7, UNI_INTAIVIET } /* blk=taiviet */, + { 2, 9193, 0, 4, 0, UNI_hst_values_index } /* hst= */, + { 4, 9193, 6525, 4, 3, UNI_LB__H3 } /* hst=lvt */, + { 1, 3688, 995, 17, 2, -UNI_STERM } /* sentenceterminal=no */, + { 1, 9623, 6327, 3, 11, UNI_JG__AFRICANNOON } /* jg=africannoon */, + { 2, 9647, 7558, 3, 2, UNI_NV__13 } /* nv=13 */, + { 0, 9365, 1622, 4, 5, UNI_LATN } /* scx=latin */, + { 0, 9901, 1812, 8, 5, UNI_XPOSIXUPPER } /* isxposixupper */, + { 1, 184, 8024, 3, 6, UNI_CJKEXTC } /* iscjkextc */, + { 0, 9647, 8358, 3, 2, UNI_NV__30 } /* nv=30 */, + { 0, 184, 9269, 2, 4, UNI_MYMR } /* ismymr */, + { 8, 8886, 8430, 3, 6, UNI_CARI } /* sc=carian */, + { 26, 9647, 8400, 3, 6, UNI_NV__900000 } /* nv=900000 */, + { 0, 8233, 9453, 7, 3, UNI_VAI } /* script=vai */, + { 0, 9365, 8514, 4, 6, UNI_HATR } /* scx=hatran */, + { 0, 8424, 5283, 6, 14, UNI_PHONETICEXTSUP } /* block=phoneticextsup */, + { 8, 8886, 7311, 3, 9, UNI_TALU } /* sc=newtailue */, + { 0, 9909, 6, 3, 1, UNI_PD } /* ispd */, + { 4, 8886, 9469, 3, 4, UNI_XSUX } /* sc=xsux */, + { 0, 9093, 4989, 4, 6, UNI_KANGXI } /* blk=kangxi */, + { 3, 2779, 0, 12, 0, UNI_MONGOLIANSUP } /* mongoliansup */, + { 8, 9093, 1030, 4, 27, UNI_OCR } /* blk=opticalcharacterrecognition */, + { 1, 2106, 5943, 21, 12, UNI_WB__EB } /* graphemeclusterbreak=glueafterzwj */, + { 0, 7025, 9689, 3, 3, UNI_IN__4 } /* in=v40 */, + { 0, 6918, 4357, 10, 15, UNI_LB__CB } /* linebreak=contingentbreak */, + { 1, 5760, 9014, 13, 3, UNI_NV__5_SLASH_2 } /* numericvalue=5/2 */, + { 2, 9909, 1812, 7, 5, UNI_POSIXUPPER } /* isposixupper */, + { 4, 8556, 26, 6, 1, UNI_XPOSIXLOWER } /* lower=y */, + { 3, 9647, 7724, 3, 8, UNI_NV__4_SLASH_5 } /* nv=8.00e-01 */, + { 0, 8424, 1955, 6, 22, UNI_MISCTECHNICAL } /* block=miscellaneoustechnical */, + { 8, 2703, 9734, 19, 3, UNI_IDST } /* idstrinaryoperator=yes */, + { 0, 8424, 719, 6, 30, UNI_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumericsupplement */, + { 1, 8233, 9329, 7, 4, UNI_PRTI } /* script=prti */, + { 0, 9909, 7009, 3, 9, UNI_PHNX } /* isphoenician */, + { 0, 9113, 8835, 5, 4, UNI_CCC__91 } /* ccc=ccc91 */, + { 2, 8424, 1506, 6, 24, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* block=supsymbolsandpictographs */, + { 2, 9620, 3852, 3, 16, UNI_PF } /* gc=finalpunctuation */, + { 8, 8879, 838, 3, 10, UNI_PHONETICEXT } /* inphoneticext */, + { 1, 3671, 9089, 17, 4, UNI_BHKS } /* scriptextensions=bhks */, + { 18, 9605, 3852, 3, 3, UNI_DT__FIN } /* dt=fin */, + { 1, 6003, 0, 12, 0, UNI_joinc_values_index } /* joincontrol= */, + { 1, 8424, 1622, 6, 14, UNI_LATINEXTA } /* block=latinextendeda */, + { 0, 5565, 4954, 13, 3, UNI_JG__HEH } /* joininggroup=heh */, + { 0, 9093, 3200, 4, 18, UNI_ORNAMENTALDINGBATS } /* blk=ornamentaldingbats */, + { 2, 8406, 36, 6, 1, UNI_XPOSIXALPHA } /* alpha=t */, + { 2, 8424, 4108, 6, 16, UNI_MYANMAREXTA } /* block=myanmarextendeda */, + { 1, 1735, 8864, 22, 5, -UNI_CWCM } /* changeswhencasemapped=false */, + { 2, 8424, 570, 7, 29, UNI_CJKEXTC } /* block=cjkunifiedideographsextensionc */, + { 1, 4361, 3886, 4, 14, UNI_GEORGIANEXT } /* ingeorgianextended */, + { 4, 1757, 8864, 22, 5, -UNI_CWL } /* changeswhenlowercased=false */, + { 5, 9365, 9277, 4, 4, UNI_NBAT } /* scx=nbat */, + { 1, 9365, 8296, 4, 7, UNI_TAVT } /* scx=taiviet */, + { 1, 1497, 3852, 9, 16, UNI_PF } /* category=finalpunctuation */, + { 2, 6385, 2800, 4, 17, UNI_OTTOMANSIYAQNUMBERS } /* inottomansiyaqnumbers */, + { 1, 9093, 1531, 5, 13, UNI_BYZANTINEMUSIC } /* blk=byzantinemusic */, + { 3, 4108, 0, 7, 0, UNI_MYMR } /* myanmar */, + { 0, 3868, 1187, 16, 2, UNI_SK } /* generalcategory=sk */, + { 12, 8163, 26, 7, 1, UNI_NFKCQC__Y } /* nfkcqc=y */, + { 0, 8844, 9433, 5, 4, UNI_CWCF } /* cwcf=true */, + { 0, 9093, 5859, 4, 12, UNI_CHESSSYMBOLS } /* blk=chesssymbols */, + { 0, 5565, 5181, 13, 4, UNI_JG__TETH } /* joininggroup=teth */, + { 17, 2106, 1855, 21, 2, UNI_GCB__CN } /* graphemeclusterbreak=cn */, + { 11, 8332, 9058, 3, 3, UNI_AHOM } /* isahom */, + { 0, 7932, 3, 8, 1, -UNI_RADICAL } /* radical=f */, + { 1, 8233, 7338, 7, 9, UNI_SC__PERM } /* script=oldpermic */, + { 2, 8332, 833, 4, 4, UNI_ARROWS } /* isarrows */, + { 10, 5500, 0, 13, 0, UNI_ME } /* enclosingmark */, + { 0, 2106, 262, 21, 2, UNI_GCB__SM } /* graphemeclusterbreak=sm */, + { 0, 8886, 9321, 3, 4, UNI_PHNX } /* sc=phnx */, + { 0, 9620, 5255, 3, 14, UNI_MN } /* gc=nonspacingmark */, + { 2, 8107, 0, 7, 0, UNI_KNDA } /* kannada */, + { 1, 3868, 47, 16, 1, UNI_M } /* generalcategory=m */, + { 12, 9620, 4140, 3, 5, UNI_C } /* gc=other */, + { 2, 8424, 3326, 6, 18, UNI_TAIXUANJING } /* block=taixuanjingsymbols */, + { 3, 6338, 36, 11, 1, UNI_XPOSIXALPHA } /* alphabetic=t */, + { 2, 1497, 3146, 9, 18, UNI_PI } /* category=initialpunctuation */, + { 1, 8884, 5395, 5, 14, UNI_INSC__VOWELDEPENDENT } /* insc=voweldependent */, + { 0, 9629, 533, 3, 2, UNI_LB__NS } /* lb=ns */, + { 5, 7018, 7508, 10, 3, UNI_IN__2 } /* presentin=2.0 */, + { 1, 8424, 2006, 6, 4, UNI_INMODI } /* block=modi */, + { 0, 9365, 9305, 4, 4, UNI_ORYA } /* scx=orya */, + { 16, 6918, 5952, 10, 2, UNI_LB__ZW } /* linebreak=zw */, + { 8, 3671, 7956, 17, 8, UNI_TAGB } /* scriptextensions=tagbanwa */, + { 3, 9113, 5539, 4, 13, UNI_CCC__IS } /* ccc=iotasubscript */, + { 2, 5760, 5410, 13, 1, UNI_NV__0 } /* numericvalue=0 */, + { 0, 9113, 6818, 4, 10, UNI_CCC__BR } /* ccc=belowright */, + { 8, 9481, 0, 4, 0, UNI_ZANB } /* zanb */, + { 23, 8233, 9413, 7, 4, UNI_TAVT } /* script=tavt */, + { 23, 8886, 4672, 3, 15, UNI_SARB } /* sc=oldsoutharabian */, + { 0, 2204, 4688, 3, 14, UNI_PS } /* isopenpunctuation */, + { 0, 1159, 0, 3, 0, UNI_nt_values_index } /* nt= */, + { 16, 8233, 7980, 7, 4, UNI_UGAR } /* script=ugar */, + { 0, 9093, 9233, 4, 4, UNI_LISU } /* blk=lisu */, + { 12, 9946, 8269, 3, 6, UNI_SUPPUAA } /* issuppuaa */, + { 2, 184, 3688, 2, 16, UNI_STERM } /* issentenceterminal */, + { 1, 8424, 7812, 6, 8, UNI_INDUPLOYAN } /* block=duployan */, + { 0, 184, 2931, 3, 7, UNI_CHER } /* ischerokee */, + { 0, 3951, 1852, 3, 15, UNI_INDICNUMBERFORMS } /* isindicnumberforms */, + { 0, 1084, 9433, 26, 4, UNI_CWKCF } /* changeswhennfkccasefolded=true */, + { 1, 7018, 0, 10, 0, UNI_in_values_index } /* presentin= */, + { 8, 6828, 2413, 10, 20, UNI_BC__PDF } /* bidiclass=popdirectionalformat */, + { 0, 3671, 6724, 18, 10, UNI_SYLO } /* scriptextensions=sylotinagri */, + { 1, 878, 0, 10, 0, UNI_CO } /* privateuse */, + { 7, 8616, 26, 6, 1, UNI_STERM } /* sterm=y */, + { 2, 9153, 9773, 4, 2, UNI_GCB__XX } /* gcb=xx */, + { 13, 1497, 2273, 9, 20, UNI_PC } /* category=connectorpunctuation */, + { 2, 9113, 6481, 4, 11, UNI_CCC__8 } /* ccc=kanavoicing */, + { 0, 184, 1532, 2, 1, UNI_Z } /* isz */, + { 0, 9113, 3433, 4, 13, UNI_CCC__202 } /* ccc=attachedbelow */, + { 1, 1801, 0, 21, 0, UNI_CWU } /* changeswhenuppercased */, + { 9, 8886, 8149, 3, 7, UNI_SC__MULT } /* sc=multani */, + { 3, 3671, 7302, 17, 9, UNI_NBAT } /* scriptextensions=nabataean */, + { 0, 34, 0, 3, 0, UNI_EXT } /* ext */, + { 2, 8424, 4821, 6, 5, UNI_ASCII } /* block=ascii */, + { 1, 8685, 9734, 4, 3, UNI_XPOSIXXDIGIT } /* hex=yes */, + { 5, 9365, 3772, 4, 4, UNI_BOPO } /* scx=bopo */, + { 0, 1767, 0, 2, 0, UNI_NL } /* nl */, + { 1, 9365, 9257, 4, 4, UNI_MLYM } /* scx=mlym */, + { 1, 9620, 106, 3, 6, UNI_S } /* gc=symbol */, + { 3, 3002, 9668, 18, 3, UNI_DT__SQR } /* decompositiontype=sqr */, + { 16, 2703, 1, 19, 1, -UNI_IDST } /* idstrinaryoperator=n */, + { 3, 1362, 8755, 25, 4, UNI_CCC__22 } /* canonicalcombiningclass=ccc22 */, + { 0, 9113, 9533, 4, 3, UNI_CCC__A } /* ccc=230 */, + { 2, 6816, 6809, 3, 9, UNI_ASCII } /* inbasiclatin */, + { 1, 7025, 7159, 3, 3, UNI_IN__5 } /* in=5.0 */, + { 2, 9049, 7502, 4, 1, UNI_AGE__8 } /* age=8 */, + { 2, 9647, 9009, 3, 4, UNI_NV__13_SLASH_2 } /* nv=13/2 */, + { 11, 9620, 2273, 3, 20, UNI_PC } /* gc=connectorpunctuation */, + { 9, 8886, 2211, 3, 7, UNI_SC__SINH } /* sc=sinhala */, + { 2, 78, 0, 35, 0, UNI_ARABICMATH } /* arabicmathematicalalphabeticsymbols */, + { 3, 2493, 3362, 20, 18, UNI_VO__TR } /* verticalorientation=transformedrotated */, + { 1, 3868, 1036, 16, 2, UNI_CASEDLETTER } /* generalcategory=lc */, + { 0, 2493, 471, 20, 2, UNI_VO__TU } /* verticalorientation=tu */, + { 0, 8160, 721, 4, 28, UNI_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumericsupplement */, + { 7, 7025, 7463, 3, 1, UNI_IN__3 } /* in=3 */, + { 0, 1239, 995, 25, 2, -UNI_COMPEX } /* fullcompositionexclusion=no */, + { 1, 9161, 0, 4, 0, UNI_GONM } /* gonm */, + { 9, 8844, 26, 5, 1, UNI_CWCF } /* cwcf=y */, + { 8, 9365, 8944, 4, 4, UNI_TAKR } /* scx=takr */, + { 10, 3243, 1, 11, 1, -UNI_XPOSIXSPACE } /* whitespace=n */, + { 5, 6918, 340, 10, 2, UNI_LB__OP } /* linebreak=op */, + { 0, 6567, 1959, 6, 18, UNI_MISCTECHNICAL } /* inmiscellaneoustechnical */, + { 10, 2169, 0, 14, 0, UNI_MEETEIMAYEKEXT } /* meeteimayekext */, + { 0, 184, 6492, 2, 11, UNI_KATAKANAEXT } /* iskatakanaext */, + { 6, 976, 0, 27, 0, UNI_ANCIENTGREEKMUSIC } /* ancientgreekmusicalnotation */, + { 42, 1362, 7539, 24, 2, UNI_CCC__22 } /* canonicalcombiningclass=22 */, + { 0, 6624, 0, 11, 0, UNI_NO } /* othernumber */, + { 0, 3868, 3227, 16, 9, UNI_Z } /* generalcategory=separator */, + { 0, 3200, 0, 18, 0, UNI_ORNAMENTALDINGBATS } /* ornamentaldingbats */, + { 5, 184, 7118, 2, 4, UNI_WARA } /* iswara */, + { 0, 9093, 6267, 4, 12, UNI_PHAISTOS } /* blk=phaistosdisc */, + { 3, 8886, 9253, 3, 4, UNI_MIAO } /* sc=miao */, + { 1, 1933, 9433, 22, 4, UNI_LOE } /* logicalorderexception=true */, + { 0, 9313, 0, 3, 0, UNI_PCM } /* pcm */, + { 0, 1243, 1, 21, 1, -UNI_CE } /* compositionexclusion=n */, + { 2, 9093, 4807, 4, 14, UNI_ANCIENTSYMBOLS } /* blk=ancientsymbols */, + { 1, 9365, 7049, 5, 3, UNI_SAUR } /* scx=saur */, + { 4, 1362, 8449, 25, 5, UNI_CCC__118 } /* canonicalcombiningclass=ccc118 */, + { 1, 9623, 6788, 3, 10, UNI_JG__AFRICANQAF } /* jg=africanqaf */, + { 2, 184, 5578, 2, 13, UNI_KANAEXTA } /* iskanaextendeda */, + { 0, 3671, 9225, 17, 4, UNI_LINA } /* scriptextensions=lina */, + { 1, 8886, 2984, 3, 4, UNI_SC__COPT } /* sc=copt */, + { 0, 8233, 7812, 7, 8, UNI_SC__DUPL } /* script=duployan */, + { 0, 8051, 36, 7, 1, UNI_COMPEX } /* compex=t */, + { 3, 8886, 9117, 3, 4, UNI_SC__CPRT } /* sc=cprt */, + { 0, 1779, 9734, 22, 3, UNI_CWT } /* changeswhentitlecased=yes */, + { 24, 3326, 0, 18, 0, UNI_TAIXUANJING } /* taixuanjingsymbols */, + { 9, 9946, 8262, 3, 3, UNI_SOYO } /* issoyo */, + { 9, 9647, 7571, 3, 2, UNI_NV__33 } /* nv=33 */, + { 0, 8233, 2393, 7, 20, UNI_HMNP } /* script=nyiakengpuachuehmong */, + { 2, 8424, 8121, 6, 7, UNI_INLINEARA } /* block=lineara */, + { 0, 2493, 3248, 4, 5, UNI_VERTSPACE } /* vertspace */, + { 10, 6015, 6, 12, 1, UNI_JT__D } /* joiningtype=d */, + { 5, 9608, 4290, 3, 7, UNI_EA__N } /* ea=neutral */, + { 1, 9623, 9656, 3, 3, UNI_JG__REH } /* jg=reh */, + { 8, 8424, 2779, 6, 9, UNI_INMONGOLIAN } /* block=mongolian */, + { 1, 9662, 3, 3, 1, -UNI_SD } /* sd=f */, + { 1, 3002, 7868, 18, 8, UNI_DT__ISO } /* decompositiontype=isolated */, + { 0, 184, 8031, 3, 6, UNI_CJKEXTD } /* iscjkextd */, + { 6, 9647, 7636, 3, 8, UNI_NV__1_SLASH_20 } /* nv=5.00e-02 */, + { 2, 1497, 5500, 9, 13, UNI_ME } /* category=enclosingmark */, + { 1, 8960, 3, 4, 1, -UNI_IDS } /* ids=f */, + { 1, 8233, 9045, 7, 4, UNI_SC__ADLM } /* script=adlm */, + { 1, 9365, 8248, 5, 6, UNI_SHAW } /* scx=shavian */, + { 0, 6371, 1, 11, 1, -UNI_DEP } /* deprecated=n */, + { 10, 9093, 8939, 4, 5, UNI_INTAILE } /* blk=taile */, + { 0, 184, 9273, 2, 4, UNI_NARB } /* isnarb */, + { 2, 8849, 3, 5, 1, -UNI_CWCM } /* cwcm=f */, + { 1, 2684, 6938, 19, 10, UNI_LB__H2 } /* hangulsyllabletype=lvsyllable */, + { 0, 8604, 9734, 6, 3, UNI_QMARK } /* qmark=yes */, + { 1, 9728, 26, 3, 1, UNI_VS } /* vs=y */, + { 3, 8233, 1573, 7, 4, UNI_SC__PHAG } /* script=phag */, + { 5, 5760, 9009, 13, 4, UNI_NV__13_SLASH_2 } /* numericvalue=13/2 */, + { 4, 3164, 0, 18, 0, UNI_LATINEXTADDITIONAL } /* latinextadditional */, + { 0, 8086, 26, 7, 1, UNI_GRBASE } /* grbase=y */, + { 9, 5760, 7659, 13, 2, UNI_NV__16 } /* numericvalue=16 */, + { 2, 8424, 8296, 6, 7, UNI_INTAIVIET } /* block=taiviet */, + { 0, 5604, 0, 13, 0, UNI_LOWSURROGATES } /* lowsurrogates */, + { 1, 6918, 7138, 10, 10, UNI_LB__WJ } /* linebreak=wordjoiner */, + { 8, 2148, 7941, 3, 7, UNI_SPECIALS } /* inspecials */, + { 1, 6828, 18, 10, 1, UNI_BC__R } /* bidiclass=r */, + { 1, 3671, 6159, 17, 12, UNI_GONM } /* scriptextensions=masaramgondi */, + { 1, 9365, 8310, 4, 7, UNI_TIRH } /* scx=tirhuta */, + { 0, 9923, 8305, 4, 5, UNI_INTIBETAN } /* intibetan */, + { 9, 1362, 8455, 25, 5, UNI_CCC__122 } /* canonicalcombiningclass=ccc122 */, + { 0, 9909, 8220, 3, 5, UNI_PATSYN } /* ispatsyn */, + { 8, 8886, 8894, 3, 4, UNI_SC__LIMB } /* sc=limb */, + { 0, 8556, 0, 6, 0, UNI_lower_values_index } /* lower= */, + { 3, 6949, 533, 4, 2, UNI_CANS } /* iscans */, + { 0, 3671, 1482, 18, 3, UNI_SIND } /* scriptextensions=sind */, + { 0, 5760, 9590, 13, 3, UNI_NV__9_SLASH_2 } /* numericvalue=9/2 */, + { 0, 5227, 0, 16, 0, UNI_DT__CAN } /* nfdquickcheck=no */, + { 1, 8886, 9421, 3, 4, UNI_SC__TGLG } /* sc=tglg */, + { 0, 9093, 2085, 4, 11, UNI_CYRILLICSUP } /* blk=cyrillicsup */, + { 2, 9365, 8121, 4, 7, UNI_LINA } /* scx=lineara */, + { 0, 9097, 1, 4, 1, UNI_BPT__N } /* bpt=n */, + { 0, 1911, 3484, 22, 17, UNI_INSC__CONSONANTPREFIXED } /* indicsyllabiccategory=consonantprefixed */, + { 0, 6051, 0, 12, 0, UNI_MAHJONG } /* mahjongtiles */, + { 0, 9093, 8275, 4, 7, UNI_SUPPUAB } /* blk=suppuab */, + { 1, 1497, 0, 10, 0, UNI_S } /* category=s */, + { 3, 6885, 9190, 3, 3, UNI_HMNP } /* ishmnp */, + { 0, 8233, 3620, 7, 10, UNI_SC__MANI } /* script=manichaean */, + { 0, 5760, 8394, 13, 2, UNI_NV__80 } /* numericvalue=80 */, + { 6, 8268, 0, 7, 0, UNI_SUPPUAA } /* suppuaa */, + { 2, 8886, 6602, 3, 11, UNI_SC__NAND } /* sc=nandinagari */, + { 0, 9093, 3773, 5, 10, UNI_BOPOMOFOEXT } /* blk=bopomofoext */, + { 2, 8886, 3620, 3, 4, UNI_SC__MANI } /* sc=mani */, + { 1, 8332, 9046, 3, 3, UNI_ADLM } /* isadlm */, + { 9, 21, 4975, 2, 7, UNI_KANASUP } /* inkanasup */, + { 0, 8886, 8919, 3, 5, UNI_OGAM } /* sc=ogham */, + { 0, 1158, 8228, 3, 3, UNI_TAGS } /* intags */, + { 0, 9953, 9454, 3, 3, UNI_VAI } /* isvaii */, + { 0, 6005, 4379, 9, 8, UNI_CONTROLPICTURES } /* incontrolpictures */, + { 4, 4204, 0, 16, 0, UNI_SYRIACSUP } /* syriacsupplement */, + { 0, 7108, 8864, 10, 5, -UNI_XPOSIXUPPER } /* uppercase=false */, + { 9, 8556, 36, 6, 1, UNI_XPOSIXLOWER } /* lower=t */, + { 1, 184, 4402, 2, 15, UNI_PD } /* isdashpunctuation */, + { 1, 9113, 8212, 4, 7, UNI_CCC__1 } /* ccc=overlay */, + { 0, 1362, 8443, 25, 5, UNI_CCC__107 } /* canonicalcombiningclass=ccc107 */, + { 0, 2127, 0, 14, 0, UNI_ROHG } /* hanifirohingya */, + { 7, 6005, 3536, 3, 16, UNI_CYRILLICEXTC } /* incyrillicextendedc */, + { 4, 5760, 8388, 13, 6, UNI_NV__700000 } /* numericvalue=700000 */, + { 1, 9629, 1767, 3, 2, UNI_LB__NL } /* lb=nl */, + { 0, 21, 2514, 3, 18, UNI_ANCIENTGREEKNUMBERS } /* inancientgreeknumbers */, + { 4, 9113, 8760, 5, 4, UNI_CCC__23 } /* ccc=ccc23 */, + { 1, 9731, 8156, 3, 7, UNI_WB__NL } /* wb=newline */, + { 2, 3671, 8255, 18, 3, UNI_SIDD } /* scriptextensions=sidd */, + { 0, 5339, 4140, 14, 5, UNI_SB__XX } /* sentencebreak=other */, + { 0, 5760, 7159, 13, 1, UNI_NV__5 } /* numericvalue=5 */, + { 0, 184, 3038, 2, 8, UNI_ETHI } /* isethiopic */, + { 2, 8338, 3, 7, 1, -UNI_XPOSIXSPACE } /* wspace=f */, + { 1, 1362, 2379, 24, 5, UNI_CCC__R } /* canonicalcombiningclass=right */, + { 0, 7266, 0, 9, 0, UNI_LATINEXTC } /* latinextc */, + { 2, 9153, 70, 4, 2, UNI_GCB__PP } /* gcb=pp */, + { 0, 9629, 125, 3, 2, UNI_LB__CR } /* lb=cr */, + { 0, 9365, 8135, 4, 7, UNI_MAND } /* scx=mandaic */, + { 0, 9647, 7540, 3, 3, UNI_NV__200 } /* nv=200 */, + { 8, 3688, 3, 17, 1, -UNI_STERM } /* sentenceterminal=f */, + { 7, 184, 2836, 2, 19, UNI_SUNDANESESUP } /* issundanesesupplement */, + { 0, 9725, 3373, 3, 7, UNI_VO__R } /* vo=rotated */, + { 8, 8233, 6978, 7, 10, UNI_XPEO } /* script=oldpersian */, + { 1, 6888, 1, 10, 1, -UNI_DIA } /* diacritic=n */, + { 0, 3398, 9433, 18, 4, UNI_VS } /* variationselector=true */, + { 1, 6828, 2373, 10, 11, UNI_BC__L } /* bidiclass=lefttoright */, + { 10, 7018, 9445, 10, 4, UNI_IN__12 } /* presentin=v120 */, + { 0, 5565, 6327, 13, 11, UNI_JG__AFRICANNOON } /* joininggroup=africannoon */, + { 0, 2148, 1265, 3, 24, UNI_SUPERANDSUB } /* insuperscriptsandsubscripts */, + { 9, 3671, 4297, 17, 4, UNI_BRAI } /* scriptextensions=brai */, + { 5, 3868, 1472, 16, 9, UNI__PERL_SURROGATE } /* generalcategory=surrogate */, + { 4, 8684, 26, 5, 1, UNI_POSIXXDIGIT } /* ahex=y */, + { 0, 8233, 2212, 8, 6, UNI_SC__SINH } /* script=sinhala */, + { 1, 8338, 9433, 7, 4, UNI_XPOSIXSPACE } /* wspace=true */, + { 0, 184, 2836, 2, 12, UNI_SUNDANESESUP } /* issundanesesup */, + { 18, 9593, 5823, 3, 12, UNI_BC__AN } /* bc=arabicnumber */, + { 0, 9093, 9285, 4, 3, UNI_INNKO } /* blk=nko */, + { 1, 9093, 949, 4, 27, UNI_ALPHABETICPF } /* blk=alphabeticpresentationforms */, + { 1, 9647, 9010, 3, 3, UNI_NV__3_SLASH_2 } /* nv=3/2 */, + { 1, 3836, 0, 16, 0, UNI_CYPRIOTSYLLABARY } /* cypriotsyllabary */, + { 0, 8233, 9109, 7, 4, UNI_CANS } /* script=cans */, + { 6, 3671, 8562, 17, 6, UNI_LYCI } /* scriptextensions=lycian */, + { 8, 9113, 8443, 5, 5, UNI_CCC__107 } /* ccc=ccc107 */, + { 3, 8886, 7341, 3, 4, UNI_SC__PERM } /* sc=perm */, + { 6, 8879, 3344, 5, 10, UNI_INPC__TOPANDLEFT } /* inpc=topandleft */, + { 0, 8886, 8894, 3, 5, UNI_SC__LIMB } /* sc=limbu */, + { 2, 1497, 44, 10, 1, UNI_SK } /* category=sk */, + { 1, 9049, 9437, 4, 4, UNI_AGE__10 } /* age=v100 */, + { 3, 8886, 4297, 3, 7, UNI_BRAI } /* sc=braille */, + { 3, 5565, 6063, 13, 12, UNI_JG__MALAYALAMBHA } /* joininggroup=malayalambha */, + { 0, 9365, 8939, 4, 5, UNI_TALE } /* scx=taile */, + { 1, 3110, 0, 11, 0, UNI_GEORGIANSUP } /* georgiansup */, + { 0, 184, 5031, 2, 14, UNI_LATINEXTD } /* islatinextendedd */, + { 1, 1264, 0, 25, 0, UNI_SUPERANDSUB } /* superscriptsandsubscripts */, + { 2, 3671, 8072, 17, 7, UNI_ELYM } /* scriptextensions=elymaic */, + { 5, 9623, 9596, 3, 3, UNI_JG__BEH } /* jg=beh */, + { 2, 7088, 0, 10, 0, UNI_SUPARROWSC } /* suparrowsc */, + { 8, 7025, 7487, 3, 1, UNI_IN__6 } /* in=6 */, + { 9, 6918, 18, 10, 2, UNI_RI } /* linebreak=ri */, + { 2, 7025, 9441, 3, 4, UNI_IN__11 } /* in=v110 */, + { 1, 184, 8121, 2, 7, UNI_LINA } /* islineara */, + { 2, 9647, 8394, 3, 4, UNI_NV__8000 } /* nv=8000 */, + { 3, 8424, 6602, 6, 11, UNI_INNANDINAGARI } /* block=nandinagari */, + { 5, 6005, 570, 3, 29, UNI_CJKEXTC } /* incjkunifiedideographsextensionc */, + { 3, 5565, 9061, 13, 4, UNI_JG__ALEF } /* joininggroup=alef */, + { 3, 6816, 1189, 3, 4, UNI_INBATAK } /* inbatak */, + { 0, 5565, 4522, 13, 15, UNI_JG__MANICHAEANALEPH } /* joininggroup=manichaeanaleph */, + { 0, 9129, 1, 4, 1, -UNI_CWU } /* cwu=n */, + { 4, 9365, 9453, 4, 3, UNI_VAI } /* scx=vai */, + { 0, 3868, 878, 16, 10, UNI_CO } /* generalcategory=privateuse */, + { 2, 184, 6591, 2, 11, UNI_MYANMAREXTB } /* ismyanmarextb */, + { 2, 184, 5353, 2, 14, UNI_ZS } /* isspaceseparator */, + { 13, 8424, 2741, 6, 19, UNI_MERO } /* block=meroitichieroglyphs */, + { 0, 2006, 0, 15, 0, UNI_MODIFIERLETTERS } /* modifierletters */, + { 0, 1362, 8782, 24, 2, UNI_CCC__27 } /* canonicalcombiningclass=27 */, + { 1, 9117, 0, 4, 0, UNI_CPRT } /* cprt */, + { 2, 184, 6712, 2, 11, UNI_SUPERANDSUB } /* issuperandsub */, + { 1, 8219, 995, 7, 2, -UNI_PATSYN } /* patsyn=no */, + { 11, 184, 3722, 2, 17, UNI_SUTTONSIGNWRITING } /* issuttonsignwriting */, + { 5, 9193, 36, 4, 1, UNI_GCB__T } /* hst=t */, + { 0, 21, 9217, 2, 3, UNI_INLAO } /* inlao */, + { 10, 9647, 7159, 3, 1, UNI_NV__5 } /* nv=5 */, + { 2, 9093, 3038, 4, 11, UNI_ETHIOPICSUP } /* blk=ethiopicsup */, + { 0, 9593, 4156, 3, 16, UNI_BC__S } /* bc=segmentseparator */, + { 1, 7025, 9680, 3, 3, UNI_IN__3 } /* in=v30 */, + { 1, 3671, 9221, 17, 4, UNI_LATN } /* scriptextensions=latn */, + { 0, 6315, 0, 4, 0, UNI_XIDC } /* xidc */, + { 0, 6005, 2931, 3, 7, UNI_INCHEROKEE } /* incherokee */, + { 1, 6918, 414, 10, 11, UNI_LB__ID } /* linebreak=ideographic */, + { 8, 8871, 495, 3, 7, UNI_SB__NU } /* sb=numeric */, + { 1, 9647, 8722, 3, 2, UNI_NV__15 } /* nv=15 */, + { 2, 4220, 0, 16, 0, UNI_TANGUTCOMPONENTS } /* tangutcomponents */, + { 8, 8418, 9734, 6, 3, UNI_BIDIM } /* bidim=yes */, + { 3, 5760, 8973, 13, 4, UNI_NV__1_SLASH_10 } /* numericvalue=1/10 */, + { 3, 5979, 1, 12, 1, -UNI_IDEO } /* ideographic=n */, + { 16, 8424, 1846, 7, 21, UNI_INDICNUMBERFORMS } /* block=commonindicnumberforms */, + { 0, 9365, 9321, 4, 4, UNI_PHNX } /* scx=phnx */, + { 0, 8869, 995, 5, 2, -UNI_IDSB } /* idsb=no */, + { 3, 21, 3996, 2, 16, UNI_LINEARBSYLLABARY } /* inlinearbsyllabary */, + { 8, 9093, 2836, 4, 19, UNI_SUNDANESESUP } /* blk=sundanesesupplement */, + { 0, 6918, 8100, 10, 2, UNI_LB__HY } /* linebreak=hy */, + { 0, 8510, 1, 4, 1, -UNI_EXT } /* ext=n */, + { 1, 8685, 9433, 4, 4, UNI_XPOSIXXDIGIT } /* hex=true */, + { 1, 9365, 7332, 4, 4, UNI_ITAL } /* scx=ital */, + { 0, 184, 2741, 2, 19, UNI_MERO } /* ismeroitichieroglyphs */, + { 5, 9647, 7159, 3, 8, UNI_NV__1_SLASH_2 } /* nv=5.00e-01 */, + { 1, 3951, 6, 3, 2, UNI_IDC } /* isidc */, + { 0, 5760, 8358, 13, 2, UNI_NV__30 } /* numericvalue=30 */, + { 0, 184, 4297, 2, 15, UNI_BRAI } /* isbraillepatterns */, + { 8, 9093, 6712, 4, 11, UNI_SUPERANDSUB } /* blk=superandsub */, + { 3, 9593, 23, 3, 2, UNI_BC__AL } /* bc=al */, + { 6, 7128, 7825, 10, 3, UNI_WB__EB } /* wordbreak=gaz */, + { 1, 9623, 5643, 3, 13, UNI_JG__MANICHAEANMEM } /* jg=manichaeanmem */, + { 0, 1911, 7972, 22, 8, UNI_INSC__TONEMARK } /* indicsyllabiccategory=tonemark */, + { 0, 3671, 9105, 17, 4, UNI_CAKM } /* scriptextensions=cakm */, + { 0, 9728, 36, 3, 1, UNI_VS } /* vs=t */, + { 1, 3671, 9417, 17, 4, UNI_TFNG } /* scriptextensions=tfng */, + { 3, 6928, 0, 10, 0, UNI_lower_values_index } /* lowercase= */, + { 18, 9623, 5695, 3, 13, UNI_JG__MANICHAEANTEN } /* jg=manichaeanten */, + { 2, 6005, 8485, 3, 5, UNI_INCHAKMA } /* inchakma */, + { 0, 4705, 4718, 3, 14, UNI_TAMILSUP } /* istamilsupplement */, + { 1, 5760, 8722, 13, 2, UNI_NV__15 } /* numericvalue=15 */, + { 0, 8954, 1, 5, 1, -UNI_XIDC } /* xidc=n */, + { 0, 6338, 8864, 11, 5, -UNI_XPOSIXALPHA } /* alphabetic=false */, + { 2, 9097, 7, 4, 1, UNI_BPT__C } /* bpt=c */, + { 3, 4361, 1578, 4, 13, UNI_GEOMETRICSHAPES } /* ingeometricshapes */, + { 0, 5760, 9013, 13, 4, UNI_NV__15_SLASH_2 } /* numericvalue=15/2 */, + { 3, 6885, 2128, 3, 13, UNI_ROHG } /* ishanifirohingya */, + { 0, 1497, 4829, 9, 5, UNI_XPOSIXDIGIT } /* category=digit */, + { 7, 1713, 9734, 22, 3, UNI_CWCF } /* changeswhencasefolded=yes */, + { 2, 9620, 1014, 3, 6, UNI_L } /* gc=letter */, + { 0, 4732, 0, 15, 0, UNI_TITLE } /* titlecaseletter */, + { 2, 3671, 9457, 17, 4, UNI_WCHO } /* scriptextensions=wcho */, + { 0, 9365, 7852, 4, 8, UNI_GURU } /* scx=gurmukhi */, + { 9, 4849, 26, 14, 1, UNI_CI } /* caseignorable=y */, + { 6, 9049, 9578, 4, 3, UNI_AGE__6_DOT_3 } /* age=6.3 */, + { 15, 9365, 6724, 5, 3, UNI_SYLO } /* scx=sylo */, + { 1, 9620, 878, 3, 10, UNI_CO } /* gc=privateuse */, + { 2, 9769, 0, 2, 0, UNI_CASEDLETTER } /* l_ */, + { 0, 2067, 0, 7, 0, UNI_RADICAL } /* radical */, + { 5, 1497, 48, 9, 1, UNI_P } /* category=p */, + { 0, 21, 5045, 2, 14, UNI_LATINEXTE } /* inlatinextendede */, + { 2, 2836, 0, 4, 0, UNI_SUND } /* sund */, + { 1, 8424, 878, 6, 14, UNI_PUA } /* block=privateusearea */, + { 0, 2106, 5952, 21, 3, UNI_LB__ZWJ } /* graphemeclusterbreak=zwj */, + { 4, 5085, 6173, 4, 10, UNI_MATHALPHANUM } /* inmathalphanum */, + { 64, 9093, 8919, 4, 5, UNI_INOGHAM } /* blk=ogham */, + { 2, 2148, 4205, 3, 8, UNI_SYRIACSUP } /* insyriacsup */, + { 0, 9620, 133, 3, 4, UNI_M } /* gc=mark */, + { 4, 9953, 3248, 6, 5, UNI_VERTSPACE } /* isvertspace */, + { 1, 9647, 8358, 3, 4, UNI_NV__3000 } /* nv=3000 */, + { 2, 8520, 26, 6, 1, UNI_JOINC } /* joinc=y */, + { 1, 9093, 6767, 4, 11, UNI_YISYLLABLES } /* blk=yisyllables */, + { 0, 9093, 921, 4, 28, UNI_VSSUP } /* blk=variationselectorssupplement */, + { 3, 9093, 599, 4, 30, UNI_CJKEXTD } /* blk=cjkunifiedideographsextensiond */, + { 2, 9365, 8859, 4, 4, UNI_DOGR } /* scx=dogr */, + { 0, 6918, 7212, 10, 9, UNI_LB__B2 } /* linebreak=breakboth */, + { 6, 9093, 5799, 4, 12, UNI_ALPHABETICPF } /* blk=alphabeticpf */, + { 0, 893, 0, 28, 0, UNI_SUPPUAB } /* supplementaryprivateuseareab */, + { 20, 3671, 7892, 17, 8, UNI_JAVA } /* scriptextensions=javanese */, + { 1, 117, 4493, 3, 14, UNI_INIMPERIALARAMAIC } /* inimperialaramaic */, + { 8, 9605, 2709, 3, 3, UNI_DT__NAR } /* dt=nar */, + { 14, 9093, 8622, 4, 6, UNI_INTELUGU } /* blk=telugu */, + { 0, 9093, 2608, 4, 19, UNI_INEGYPTIANHIEROGLYPHS } /* blk=egyptianhieroglyphs */, + { 0, 9049, 9695, 4, 3, UNI_AGE__5 } /* age=v50 */, + { 19, 1911, 4236, 22, 5, UNI_INSC__VOWEL } /* indicsyllabiccategory=vowel */, + { 0, 9365, 8255, 5, 6, UNI_SIDD } /* scx=siddham */, + { 3, 9093, 78, 4, 6, UNI_INARABIC } /* blk=arabic */, + { 0, 3671, 7788, 17, 4, UNI_BALI } /* scriptextensions=bali */, + { 2, 5269, 0, 13, 0, UNI_PATSYN } /* patternsyntax */, + { 4, 9113, 8765, 5, 4, UNI_CCC__24 } /* ccc=ccc24 */, + { 1, 8886, 3038, 3, 4, UNI_ETHI } /* sc=ethi */, + { 4, 3671, 4267, 17, 4, UNI_BAMU } /* scriptextensions=bamu */, + { 0, 8886, 8310, 3, 4, UNI_SC__TIRH } /* sc=tirh */, + { 1, 1362, 8445, 24, 3, UNI_CCC__107 } /* canonicalcombiningclass=107 */, + { 2, 6679, 9734, 11, 3, UNI_SD } /* softdotted=yes */, + { 4, 9093, 8240, 4, 7, UNI_INSHARADA } /* blk=sharada */, + { 0, 2204, 6636, 3, 10, UNI_SO } /* isothersymbol */, + { 1, 1691, 722, 23, 4, UNI_BPT__C } /* bidipairedbrackettype=close */, + { 2, 8233, 9465, 7, 4, UNI_XPEO } /* script=xpeo */, + { 3, 1362, 9542, 24, 3, UNI_CCC__DA } /* canonicalcombiningclass=234 */, + { 3, 1410, 0, 13, 0, UNI_M } /* combiningmark */, + { 4, 7025, 7159, 3, 1, UNI_IN__5 } /* in=5 */, + { 12, 9093, 7964, 4, 8, UNI_INTIFINAGH } /* blk=tifinagh */, + { 6, 9647, 8464, 3, 2, UNI_NV__29 } /* nv=29 */, + { 5, 9647, 8376, 3, 5, UNI_NV__50000 } /* nv=50000 */, + { 15, 9365, 3020, 4, 4, UNI_DEVA } /* scx=deva */, + { 2, 1057, 1, 27, 1, -UNI_PCM } /* prependedconcatenationmark=n */, + { 0, 7420, 9433, 8, 4, UNI_IDS } /* idstart=true */, + { 0, 8332, 80, 4, 33, UNI_ARABICMATH } /* isarabicmathematicalalphabeticsymbols */, + { 7, 9909, 3248, 7, 5, UNI_POSIXSPACE } /* isposixspace */, + { 10, 9137, 36, 4, 1, UNI_DEP } /* dep=t */, + { 1, 1933, 36, 22, 1, UNI_LOE } /* logicalorderexception=t */, + { 1, 5565, 2147, 13, 3, UNI_JG__AIN } /* joininggroup=ain */, + { 0, 5760, 8358, 13, 5, UNI_NV__30000 } /* numericvalue=30000 */, + { 0, 8233, 8628, 7, 6, UNI_SC__THAA } /* script=thaana */, + { 1, 5760, 7516, 13, 8, UNI_NV__5_SLASH_2 } /* numericvalue=2.50e+00 */, + { 0, 8424, 8914, 6, 5, UNI_INNUSHU } /* block=nushu */, + { 1, 4580, 2761, 3, 18, UNI_MODIFIERTONELETTERS } /* inmodifiertoneletters */, + { 1, 3951, 447, 3, 17, UNI_IDEOGRAPHICSYMBOLS } /* isideographicsymbols */, + { 3, 9365, 8093, 4, 7, UNI_HANO } /* scx=hanunoo */, + { 3, 9365, 8914, 4, 5, UNI_NSHU } /* scx=nushu */, + { 1, 5835, 9433, 12, 4, UNI_BIDIC } /* bidicontrol=true */, + { 1, 9647, 7659, 3, 2, UNI_NV__16 } /* nv=16 */, + { 20, 3236, 1, 18, 1, -UNI__PERL_PATWS } /* patternwhitespace=n */, + { 0, 9731, 0, 3, 0, UNI_wb_values_index } /* wb= */, + { 1, 8424, 2333, 6, 20, UNI_GLAGOLITICSUP } /* block=glagoliticsupplement */, + { 1, 5565, 6075, 13, 12, UNI_JG__MALAYALAMLLA } /* joininggroup=malayalamlla */, + { 1, 9049, 7612, 4, 3, UNI_AGE__4_DOT_1 } /* age=4.1 */, + { 8, 8879, 838, 3, 27, UNI_PHONETICEXTSUP } /* inphoneticextensionssupplement */, + { 1, 8160, 721, 4, 14, UNI_ENCLOSEDALPHANUM } /* inenclosedalphanum */, + { 1, 9093, 5883, 4, 12, UNI_CYRILLICEXTB } /* blk=cyrillicextb */, + { 0, 1362, 8785, 25, 4, UNI_CCC__28 } /* canonicalcombiningclass=ccc28 */, + { 0, 1536, 3553, 3, 16, UNI_ETHIOPICEXTA } /* inethiopicextendeda */, + { 0, 3248, 9734, 6, 3, UNI_XPOSIXSPACE } /* space=yes */, + { 6, 5760, 8364, 13, 5, UNI_NV__40000 } /* numericvalue=40000 */, + { 5, 3868, 9108, 16, 2, UNI_MC } /* generalcategory=mc */, + { 0, 184, 4267, 2, 4, UNI_BAMU } /* isbamu */, + { 4, 3002, 8184, 18, 7, UNI_DT__NB } /* decompositiontype=nobreak */, + { 0, 21, 8680, 3, 4, UNI_INADLAM } /* inadlam */, + { 4, 9365, 983, 4, 5, UNI_GREK } /* scx=greek */, + { 0, 3586, 0, 17, 0, UNI_INDICSIYAQNUMBERS } /* indicsiyaqnumbers */, + { 0, 1911, 8646, 22, 6, UNI_INSC__VIRAMA } /* indicsyllabiccategory=virama */, + { 0, 5565, 3654, 13, 17, UNI_JG__MANICHAEANTHAMEDH } /* joininggroup=manichaeanthamedh */, + { 1, 9093, 113, 4, 35, UNI_DIACRITICALSFORSYMBOLS } /* blk=combiningdiacriticalmarksforsymbols */, + { 4, 9049, 9716, 4, 3, UNI_AGE__7 } /* age=v70 */, + { 9, 8886, 7892, 3, 8, UNI_SC__JAVA } /* sc=javanese */, + { 4, 5565, 5073, 13, 14, UNI_JG__MANICHAEANAYIN } /* joininggroup=manichaeanayin */, + { 0, 8424, 6939, 6, 2, UNI_INVS } /* block=vs */, + { 3, 3868, 5255, 16, 14, UNI_MN } /* generalcategory=nonspacingmark */, + { 1, 184, 3980, 2, 7, UNI_LINB } /* islinearb */, + { 3, 8424, 3772, 6, 16, UNI_BOPOMOFOEXT } /* block=bopomofoextended */, + { 0, 184, 6580, 2, 11, UNI_MYANMAREXTA } /* ismyanmarexta */, + { 4, 9605, 8184, 3, 7, UNI_DT__NB } /* dt=nobreak */, + { 0, 8886, 9345, 3, 4, UNI_RJNG } /* sc=rjng */, + { 9, 8871, 9773, 3, 2, UNI_SB__XX } /* sb=xx */, + { 0, 9623, 3916, 3, 16, UNI_JG__HANIFIROHINGYAPA } /* jg=hanifirohingyapa */, + { 0, 21, 7892, 2, 8, UNI_INJAVANESE } /* injavanese */, + { 9, 8886, 2393, 3, 20, UNI_HMNP } /* sc=nyiakengpuachuehmong */, + { 2, 1362, 7603, 24, 2, UNI_CCC__24 } /* canonicalcombiningclass=24 */, + { 1, 4849, 8864, 14, 5, -UNI_CI } /* caseignorable=false */, + { 0, 9129, 9734, 4, 3, UNI_CWU } /* cwu=yes */, + { 8, 7956, 0, 4, 0, UNI_TAGB } /* tagb */, + { 1, 1239, 36, 25, 1, UNI_COMPEX } /* fullcompositionexclusion=t */, + { 4, 8233, 9425, 7, 4, UNI_THAI } /* script=thai */, + { 6, 9365, 9281, 4, 4, UNI_NEWA } /* scx=newa */, + { 3, 2212, 1165, 5, 23, UNI_HALFANDFULLFORMS } /* inhalfwidthandfullwidthforms */, + { 0, 9647, 7446, 3, 1, UNI_NV__2 } /* nv=2 */, + { 1, 9053, 0, 4, 0, UNI_AGHB } /* aghb */, + { 6, 9093, 1003, 4, 27, UNI_ENCLOSEDCJK } /* blk=enclosedcjklettersandmonths */, + { 1, 1243, 36, 21, 1, UNI_CE } /* compositionexclusion=t */, + { 1, 9629, 1110, 3, 26, UNI_LB__CJ } /* lb=conditionaljapanesestarter */, + { 0, 1924, 47, 10, 1, UNI_LM } /* category=lm */, + { 2, 8616, 0, 6, 0, UNI_sterm_values_index } /* sterm= */, + { 1, 7860, 0, 4, 0, UNI_HIRA } /* hira */, + { 28, 9647, 7668, 3, 8, UNI_NV__5_SLASH_8 } /* nv=6.25e-01 */, + { 1, 8929, 0, 5, 0, UNI_OSGE } /* osage */, + { 3, 8412, 1, 6, 1, -UNI_BIDIC } /* bidic=n */, + { 1, 9093, 1539, 4, 14, UNI_MUSIC } /* blk=musicalsymbols */, + { 2, 9413, 0, 4, 0, UNI_TAVT } /* tavt */, + { 0, 1362, 8730, 25, 4, UNI_CCC__17 } /* canonicalcombiningclass=ccc17 */, + { 3, 9647, 7723, 3, 2, UNI_NV__18 } /* nv=18 */, + { 1, 8233, 8058, 7, 7, UNI_DSRT } /* script=deseret */, + { 0, 9365, 9081, 4, 4, UNI_AVST } /* scx=avst */, + { 3, 8580, 26, 6, 1, UNI__PERL_NCHAR } /* nchar=y */, + { 0, 1482, 2479, 24, 6, UNI_INPC__BOTTOM } /* indicpositionalcategory=bottom */, + { 0, 1450, 986, 5, 2, UNI_INGREEK } /* ingreek */, + { 1, 4705, 8940, 3, 4, UNI_TALE } /* istaile */, + { 3, 184, 2393, 2, 20, UNI_HMNP } /* isnyiakengpuachuehmong */, + { 9, 1497, 6360, 9, 11, UNI_CASEDLETTER } /* category=casedletter */, + { 0, 9121, 36, 4, 1, UNI_CWL } /* cwl=t */, + { 5, 9093, 3110, 4, 8, UNI_INGEORGIAN } /* blk=georgian */, + { 9, 1482, 5461, 24, 13, UNI_INPC__BOTTOMANDLEFT } /* indicpositionalcategory=bottomandleft */, + { 1, 4447, 1162, 15, 9, UNI_EA__H } /* eastasianwidth=halfwidth */, + { 0, 3671, 7860, 17, 8, UNI_HIRA } /* scriptextensions=hiragana */, + { 5, 3671, 7008, 17, 10, UNI_PHNX } /* scriptextensions=phoenician */, + { 0, 9620, 9769, 3, 2, UNI_CASEDLETTER } /* gc=l_ */, + { 5, 9153, 5952, 4, 3, UNI_LB__ZWJ } /* gcb=zwj */, + { 0, 8233, 8142, 7, 7, UNI_MARC } /* script=marchen */, + { 4, 9365, 7, 4, 18, UNI_CANS } /* scx=canadianaboriginal */, + { 7, 3671, 2006, 17, 4, UNI_MODI } /* scriptextensions=modi */, + { 0, 3932, 0, 16, 0, UNI_HIGHPUSURROGATES } /* highpusurrogates */, + { 0, 8233, 9181, 7, 4, UNI_HLUW } /* script=hluw */, + { 25, 9093, 6569, 4, 11, UNI_MISCSYMBOLS } /* blk=miscsymbols */, + { 8, 5760, 7540, 13, 2, UNI_NV__20 } /* numericvalue=20 */, + { 2, 9093, 8502, 4, 6, UNI_INGOTHIC } /* blk=gothic */, + { 0, 184, 8859, 2, 5, UNI_DOGR } /* isdogra */, + { 0, 8233, 2608, 7, 19, UNI_EGYP } /* script=egyptianhieroglyphs */, + { 1, 6918, 8345, 10, 7, UNI_LB__ZW } /* linebreak=zwspace */, + { 0, 6279, 0, 12, 0, UNI_PLAYINGCARDS } /* playingcards */, + { 2, 5760, 5409, 13, 2, UNI_NV__10 } /* numericvalue=10 */, + { 0, 9113, 9077, 4, 3, UNI_CCC__202 } /* ccc=atb */, + { 0, 21, 4989, 2, 6, UNI_KANGXI } /* inkangxi */, + { 8, 9113, 3441, 4, 9, UNI_CCC__BL } /* ccc=belowleft */, + { 3, 6816, 2533, 3, 5, UNI_INBRAHMI } /* inbrahmi */, + { 0, 3671, 7118, 17, 4, UNI_WARA } /* scriptextensions=wara */, + { 8, 9629, 18, 3, 2, UNI_RI } /* lb=ri */, + { 16, 8233, 9485, 7, 4, UNI_SC__QAAI } /* script=zinh */, + { 9, 1773, 9734, 6, 3, UNI_CASED } /* cased=yes */, + { 2, 9093, 8247, 4, 7, UNI_SHAW } /* blk=shavian */, + { 2, 6679, 0, 11, 0, UNI_sd_values_index } /* softdotted= */, + { 22, 184, 8338, 2, 6, UNI_XPOSIXSPACE } /* iswspace */, + { 4, 8604, 995, 6, 2, -UNI_QMARK } /* qmark=no */, + { 9, 4705, 8283, 3, 6, UNI_TGLG } /* istagalog */, + { 0, 4580, 2262, 10, 11, UNI_MERO } /* inmeroitichieroglyphs */, + { 0, 9365, 3772, 4, 8, UNI_BOPO } /* scx=bopomofo */, + { 5, 9620, 1410, 3, 13, UNI_M } /* gc=combiningmark */, + { 0, 184, 6051, 2, 7, UNI_MAHJONG } /* ismahjong */, + { 0, 5760, 5409, 13, 13, UNI_NV__1000000000000 } /* numericvalue=1000000000000 */, + { 0, 9365, 9453, 4, 4, UNI_VAI } /* scx=vaii */, + { 1, 9365, 2930, 4, 4, UNI_CHER } /* scx=cher */, + { 4, 1482, 3344, 24, 10, UNI_INPC__TOPANDLEFT } /* indicpositionalcategory=topandleft */, + { 0, 42, 0, 26, 0, UNI_CJKCOMPATIDEOGRAPHS } /* cjkcompatibilityideographs */, + { 4, 184, 1768, 2, 5, UNI_XPOSIXLOWER } /* islower */, + { 8, 9731, 3254, 3, 17, UNI_RI } /* wb=regionalindicator */, + { 18, 184, 6558, 2, 11, UNI_MEDF } /* ismedefaidrin */, + { 0, 1823, 0, 19, 0, UNI_CJKCOMPATIDEOGRAPHS } /* cjkcompatideographs */, + { 0, 3671, 7332, 17, 4, UNI_ITAL } /* scriptextensions=ital */, + { 6, 24, 0, 1, 0, UNI_L } /* l */, + { 0, 9365, 2532, 4, 6, UNI_BRAH } /* scx=brahmi */, + { 0, 6816, 4298, 3, 14, UNI_BRAI } /* inbraillepatterns */, + { 0, 3671, 57, 17, 2, UNI_YI } /* scriptextensions=yi */, + { 0, 7128, 4140, 10, 5, UNI_WB__XX } /* wordbreak=other */, + { 1, 9093, 509, 4, 30, UNI_CJKEXTA } /* blk=cjkunifiedideographsextensiona */, + { 0, 184, 9345, 2, 4, UNI_RJNG } /* isrjng */, + { 4, 184, 2169, 2, 14, UNI_MEETEIMAYEKEXT } /* ismeeteimayekext */, + { 0, 6567, 4096, 6, 12, UNI_MISCMATHSYMBOLSB } /* inmiscmathsymbolsb */, + { 4, 5565, 341, 13, 2, UNI_JG__PE } /* joininggroup=pe */, + { 0, 1691, 0, 23, 0, UNI_BPT__C } /* bidipairedbrackettype=c */, + { 0, 2855, 0, 19, 0, UNI_SUPARROWSA } /* supplementalarrowsa */, + { 1, 21, 6027, 2, 12, UNI_KHMERSYMBOLS } /* inkhmersymbols */, + { 15, 5339, 721, 14, 5, UNI_SB__CL } /* sentencebreak=close */, + { 1, 8424, 4933, 6, 14, UNI_INGREEK } /* block=greekandcoptic */, + { 2, 8886, 9429, 3, 4, UNI_TIBT } /* sc=tibt */, + { 6, 9113, 8790, 5, 4, UNI_CCC__29 } /* ccc=ccc29 */, + { 0, 9647, 5409, 3, 6, UNI_NV__100000 } /* nv=100000 */, + { 8, 3671, 7964, 17, 8, UNI_TFNG } /* scriptextensions=tifinagh */, + { 3, 7025, 9548, 3, 3, UNI_IN__3 } /* in=3.0 */, + { 9, 8233, 7347, 7, 9, UNI_ORKH } /* script=oldturkic */, + { 2, 5760, 7740, 13, 8, UNI_NV__1_SLASH_12 } /* numericvalue=8.33e-02 */, + { 0, 3951, 447, 3, 31, UNI_IDEOGRAPHICSYMBOLS } /* isideographicsymbolsandpunctuation */, + { 3, 3671, 7049, 18, 9, UNI_SAUR } /* scriptextensions=saurashtra */, + { 0, 9093, 7185, 4, 9, UNI_ARABICPFA } /* blk=arabicpfa */, + { 1, 8424, 6492, 6, 11, UNI_KATAKANAEXT } /* block=katakanaext */, + { 0, 2148, 2837, 3, 8, UNI_INSUNDANESE } /* insundanese */, + { 0, 8424, 7796, 6, 8, UNI_INBASSAVAH } /* block=bassavah */, + { 0, 9620, 38, 3, 2, UNI_XPOSIXDIGIT } /* gc=nd */, + { 0, 21, 7257, 2, 9, UNI_LATINEXTB } /* inlatinextb */, + { 2, 9620, 8499, 3, 2, UNI_CF } /* gc=cf */, + { 1, 6679, 0, 10, 0, UNI_SD } /* softdotted */, + { 0, 8886, 9173, 3, 4, UNI_SC__GURU } /* sc=guru */, + { 2, 6005, 690, 3, 15, UNI_CUNEIFORMNUMBERS } /* incuneiformnumbers */, + { 0, 6918, 184, 10, 2, UNI_LB__IS } /* linebreak=is */, + { 2, 8424, 7940, 6, 8, UNI_SPECIALS } /* block=specials */, + { 0, 3688, 0, 17, 0, UNI_sterm_values_index } /* sentenceterminal= */, + { 8, 9647, 7683, 3, 2, UNI_NV__26 } /* nv=26 */, + { 0, 9647, 5409, 3, 3, UNI_NV__100 } /* nv=100 */, + { 3, 9620, 406, 3, 7, UNI_XPOSIXCNTRL } /* gc=control */, + { 1, 8093, 0, 7, 0, UNI_HANO } /* hanunoo */, + { 0, 184, 7796, 2, 4, UNI_BASS } /* isbass */, + { 2, 184, 1576, 2, 15, UNI_GEOMETRICSHAPES } /* isgeometricshapes */, + { 1, 9620, 7, 3, 1, UNI_C } /* gc=c */, + { 0, 8871, 400, 3, 6, UNI_SB__FO } /* sb=format */, + { 0, 8616, 1, 6, 1, -UNI_STERM } /* sterm=n */, + { 0, 9365, 8255, 5, 3, UNI_SIDD } /* scx=sidd */, + { 0, 9093, 8065, 4, 7, UNI_INELBASAN } /* blk=elbasan */, + { 0, 6816, 3773, 3, 15, UNI_BOPOMOFOEXT } /* inbopomofoextended */, + { 0, 3739, 3, 17, 1, -UNI_UIDEO } /* unifiedideograph=f */, + { 3, 7100, 0, 8, 0, UNI_ASSIGNED } /* assigned */, + { 9, 3671, 8430, 17, 6, UNI_CARI } /* scriptextensions=carian */, + { 7, 9093, 7772, 4, 8, UNI_INARMENIAN } /* blk=armenian */, + { 20, 9626, 6, 3, 1, UNI_JT__D } /* jt=d */, + { 1, 9623, 5125, 3, 4, UNI_JG__HETH } /* jg=heth */, + { 5, 1362, 8825, 25, 4, UNI_CCC__36 } /* canonicalcombiningclass=ccc36 */, + { 1, 8424, 3964, 6, 6, UNI_LATIN1 } /* block=latin1 */, + { 4, 7980, 0, 4, 0, UNI_UGAR } /* ugar */, + { 8, 5565, 5157, 13, 14, UNI_JG__MANICHAEANRESH } /* joininggroup=manichaeanresh */, + { 0, 1735, 0, 22, 0, UNI_cwcm_values_index } /* changeswhencasemapped= */, + { 4, 8233, 2779, 7, 9, UNI_SC__MONG } /* script=mongolian */, + { 1, 9093, 5871, 4, 12, UNI_CYRILLICEXTA } /* blk=cyrillicexta */, + { 0, 9593, 4905, 3, 14, UNI_BC__EN } /* bc=europeannumber */, + { 1, 8233, 7892, 7, 8, UNI_SC__JAVA } /* script=javanese */, + { 6, 184, 1768, 2, 9, UNI_XPOSIXLOWER } /* islowercase */, + { 6, 5760, 9737, 13, 2, UNI_NV__38 } /* numericvalue=38 */, + { 0, 9647, 8388, 3, 6, UNI_NV__700000 } /* nv=700000 */, + { 0, 9602, 36, 3, 1, UNI_DI } /* di=t */, + { 0, 9647, 7524, 3, 8, UNI_NV__1_SLASH_4 } /* nv=2.50e-01 */, + { 16, 9605, 68, 3, 3, UNI_DT__SUP } /* dt=sup */, + { 0, 8424, 2044, 7, 20, UNI_CJKCOMPATFORMS } /* block=cjkcompatibilityforms */, + { 0, 9647, 8388, 3, 5, UNI_NV__70000 } /* nv=70000 */, + { 13, 9593, 1, 4, 1, UNI_BC__BN } /* bc=bn */, + { 9, 9903, 9921, 6, 5, UNI_XPOSIXPRINT } /* xposixprint */, + { 5, 1362, 7495, 24, 1, UNI_CCC__7 } /* canonicalcombiningclass=7 */, + { 0, 8424, 2532, 6, 6, UNI_INBRAHMI } /* block=brahmi */, + { 9, 8886, 9085, 3, 4, UNI_BATK } /* sc=batk */, + { 0, 9620, 1029, 3, 2, UNI_SO } /* gc=so */, + { 0, 9093, 9397, 4, 4, UNI_TAGS } /* blk=tags */, + { 5, 9365, 3620, 4, 10, UNI_MANI } /* scx=manichaean */, + { 0, 1158, 8623, 3, 5, UNI_INTELUGU } /* intelugu */, + { 0, 9365, 8205, 4, 4, UNI_OSMA } /* scx=osma */, + { 2, 9365, 9133, 4, 4, UNI_CYRL } /* scx=cyrl */, + { 75, 9093, 6988, 4, 10, UNI_INOLDSOGDIAN } /* blk=oldsogdian */, + { 6, 9093, 8949, 4, 5, UNI_VSSUP } /* blk=vssup */, + { 0, 9093, 8610, 4, 6, UNI_INREJANG } /* blk=rejang */, + { 0, 9093, 4672, 4, 15, UNI_SARB } /* blk=oldsoutharabian */, + { 8, 8886, 8514, 3, 6, UNI_HATR } /* sc=hatran */, + { 1, 3671, 7844, 17, 8, UNI_GUJR } /* scriptextensions=gujarati */, + { 1, 184, 8610, 2, 6, UNI_RJNG } /* isrejang */, + { 0, 6885, 8094, 3, 6, UNI_HANO } /* ishanunoo */, + { 1, 9605, 3308, 3, 5, UNI_DT__SML } /* dt=small */, + { 3, 8886, 5955, 3, 12, UNI_SC__GONG } /* sc=gunjalagondi */, + { 6, 1508, 0, 2, 0, UNI_PS } /* ps */, + { 1, 9629, 3254, 3, 17, UNI_RI } /* lb=regionalindicator */, + { 0, 1362, 8464, 24, 2, UNI_CCC__29 } /* canonicalcombiningclass=29 */, + { 0, 7018, 9441, 10, 4, UNI_IN__11 } /* presentin=v110 */, + { 4, 1243, 26, 21, 1, UNI_CE } /* compositionexclusion=y */, + { 0, 9647, 5409, 3, 11, UNI_NV__10000000000 } /* nv=10000000000 */, + { 1, 3671, 8142, 17, 4, UNI_MARC } /* scriptextensions=marc */, + { 0, 7420, 995, 8, 2, -UNI_IDS } /* idstart=no */, + { 10, 9629, 73, 3, 2, UNI_LB__EM } /* lb=em */, + { 8, 3254, 36, 18, 1, UNI_RI } /* regionalindicator=t */, + { 1, 8424, 3756, 6, 9, UNI_ARABICSUP } /* block=arabicsup */, + { 21, 8058, 0, 7, 0, UNI_DSRT } /* deseret */, + { 2, 8592, 0, 6, 0, UNI_nfdqc_values_index } /* nfdqc= */, + { 0, 2703, 8864, 19, 5, -UNI_IDST } /* idstrinaryoperator=false */, + { 6, 11, 0, 2, 0, UNI_DI } /* di */, + { 13, 3772, 0, 4, 0, UNI_BOPO } /* bopo */, + { 8, 9647, 8388, 3, 2, UNI_NV__70 } /* nv=70 */, + { 3, 8849, 0, 4, 0, UNI_CWCM } /* cwcm */, + { 1, 5760, 5409, 13, 11, UNI_NV__10000000000 } /* numericvalue=10000000000 */, + { 1025, 6231, 5487, 12, 7, UNI_XPOSIXDIGIT } /* numerictype=decimal */, + { 3, 9093, 7884, 4, 8, UNI_JAMOEXTB } /* blk=jamoextb */, + { 5, 8424, 2401, 6, 3, UNI_PUA } /* block=pua */, + { 2, 4826, 3, 9, 1, -UNI_XPOSIXXDIGIT } /* hexdigit=f */, + { 0, 8886, 8254, 3, 4, UNI_SIDD } /* sc=sidd */, + { 0, 9093, 4492, 4, 15, UNI_INIMPERIALARAMAIC } /* blk=imperialaramaic */, + { 8, 9909, 9326, 3, 3, UNI_MIAO } /* isplrd */, + { 0, 9121, 26, 4, 1, UNI_CWL } /* cwl=y */, + { 1, 9093, 8289, 4, 7, UNI_INTAITHAM } /* blk=taitham */, + { 3, 8424, 3469, 6, 4, UNI_UCAS } /* block=ucas */, + { 0, 7018, 9707, 10, 3, UNI_IN__6_DOT_1 } /* presentin=v61 */, + { 2, 6888, 0, 10, 0, UNI_dia_values_index } /* diacritic= */, + { 1, 5565, 65, 15, 2, UNI_JG__KAPH } /* joininggroup=kaph */, + { 2, 3671, 8934, 17, 5, UNI_RUNR } /* scriptextensions=runic */, + { 5, 3868, 1855, 16, 2, UNI_CN } /* generalcategory=cn */, + { 0, 9093, 1645, 4, 23, UNI_SHORTHANDFORMATCONTROLS } /* blk=shorthandformatcontrols */, + { 1, 8233, 6724, 8, 10, UNI_SC__SYLO } /* script=sylotinagri */, + { 18, 184, 9225, 2, 4, UNI_LINA } /* islina */, + { 0, 4989, 0, 14, 0, UNI_KANGXI } /* kangxiradicals */, + { 4, 7128, 0, 4, 0, UNI_XPOSIXWORD } /* word */, + { 3, 9153, 0, 4, 0, UNI_gcb_values_index } /* gcb= */, + { 2, 9365, 5617, 4, 9, UNI_MLYM } /* scx=malayalam */, + { 2, 9647, 0, 3, 0, UNI_nv_values_index } /* nv= */, + { 3, 9623, 5185, 3, 14, UNI_JG__MANICHAEANYODH } /* jg=manichaeanyodh */, + { 1, 4821, 0, 14, 0, UNI_ahex_values_index } /* asciihexdigit= */, + { 2, 8233, 9185, 7, 4, UNI_HMNG } /* script=hmng */, + { 6, 1497, 698, 9, 6, UNI_N } /* category=number */, + { 0, 2212, 2960, 5, 6, UNI_HALFMARKS } /* inhalfmarks */, + { 1, 6918, 836, 10, 2, UNI_LB__SP } /* linebreak=sp */, + { 1, 6602, 0, 4, 0, UNI_NAND } /* nand */, + { 8, 1497, 467, 9, 11, UNI_P } /* category=punctuation */, + { 4, 6768, 2233, 3, 5, UNI_YIJING } /* isyijing */, + { 1, 9365, 1845, 4, 6, UNI_ZYYY } /* scx=common */, + { 0, 184, 6859, 3, 9, UNI_CJKSTROKES } /* iscjkstrokes */, + { 4, 1497, 1508, 9, 2, UNI_PS } /* category=ps */, + { 88, 9365, 2253, 4, 20, UNI_HLUW } /* scx=anatolianhieroglyphs */, + { 1, 8424, 349, 6, 33, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* block=supplementalsymbolsandpictographs */, + { 1, 21, 7876, 2, 8, UNI_JAMOEXTA } /* injamoexta */, + { 12, 8233, 2333, 7, 10, UNI_SC__GLAG } /* script=glagolitic */, + { 10, 988, 0, 5, 0, UNI_MUSIC } /* music */, + { 1, 8163, 47, 7, 1, UNI_NFCQC__M } /* nfkcqc=m */, + { 0, 4826, 9734, 9, 3, UNI_XPOSIXXDIGIT } /* hexdigit=yes */, + { 0, 184, 1539, 2, 14, UNI_MUSIC } /* ismusicalsymbols */, + { 5, 8886, 8562, 3, 4, UNI_LYCI } /* sc=lyci */, + { 8, 3671, 8484, 17, 6, UNI_CAKM } /* scriptextensions=chakma */, + { 1, 3002, 68, 18, 3, UNI_DT__SUP } /* decompositiontype=sup */, + { 2, 6885, 6095, 3, 3, UNI_HMNG } /* ishmng */, + { 3, 9193, 6303, 4, 12, UNI_GCB__T } /* hst=trailingjamo */, + { 1, 2148, 8262, 3, 6, UNI_INSOYOMBO } /* insoyombo */, + { 16, 5435, 9433, 13, 4, UNI_BIDIM } /* bidimirrored=true */, + { 0, 184, 7884, 2, 8, UNI_JAMOEXTB } /* isjamoextb */, + { 11, 6828, 9635, 10, 3, UNI_BC__LRI } /* bidiclass=lri */, + { 1, 4705, 3327, 3, 17, UNI_TAIXUANJING } /* istaixuanjingsymbols */, + { 8, 8424, 3020, 6, 18, UNI_DEVANAGARIEXT } /* block=devanagariextended */, + { 2, 3671, 8058, 17, 7, UNI_DSRT } /* scriptextensions=deseret */, + { 3, 8233, 3467, 7, 17, UNI_AGHB } /* script=caucasianalbanian */, + { 16, 4705, 5624, 3, 3, UNI_TAML } /* istaml */, + { 10, 9049, 7548, 4, 3, UNI_AGE__3_DOT_1 } /* age=3.1 */, + { 0, 8886, 9301, 3, 4, UNI_ORKH } /* sc=orkh */, + { 65, 6567, 4080, 6, 12, UNI_MISCMATHSYMBOLSA } /* inmiscmathsymbolsa */, + { 1, 3836, 0, 7, 0, UNI_CPRT } /* cypriot */, + { 0, 6828, 5823, 10, 12, UNI_BC__AN } /* bidiclass=arabicnumber */, + { 1, 8233, 1146, 8, 3, UNI_SORA } /* script=sora */, + { 3, 184, 3620, 2, 10, UNI_MANI } /* ismanichaean */, + { 0, 5760, 9033, 13, 4, UNI_NV__3_SLASH_80 } /* numericvalue=3/80 */, + { 0, 9045, 0, 4, 0, UNI_ADLM } /* adlm */, + { 0, 9904, 8839, 5, 5, UNI_POSIXCNTRL } /* posixcntrl */, + { 1, 1779, 8864, 22, 5, -UNI_CWT } /* changeswhentitlecased=false */, + { 0, 9365, 9053, 4, 4, UNI_AGHB } /* scx=aghb */, + { 1, 3671, 3038, 17, 4, UNI_ETHI } /* scriptextensions=ethi */, + { 9, 1239, 9433, 25, 4, UNI_COMPEX } /* fullcompositionexclusion=true */, + { 16, 3398, 0, 18, 0, UNI_vs_values_index } /* variationselector= */, + { 1, 184, 1846, 3, 5, UNI_ZYYY } /* iscommon */, + { 3, 8233, 8205, 7, 4, UNI_OSMA } /* script=osma */, + { 17, 9093, 6602, 4, 11, UNI_INNANDINAGARI } /* blk=nandinagari */, + { 0, 9781, 7420, 6, 7, UNI__PERL_IDSTART } /* _perl_idstart */, + { 21, 3671, 8205, 17, 7, UNI_OSMA } /* scriptextensions=osmanya */, + { 8, 8871, 1768, 3, 5, UNI_SB__LO } /* sb=lower */, + { 5, 2212, 8095, 4, 5, UNI_INHANUNOO } /* inhanunoo */, + { 0, 9193, 5747, 4, 13, UNI_HST__NA } /* hst=notapplicable */, + { 2, 184, 43, 3, 8, UNI_CJKCOMPAT } /* iscjkcompat */, + { 0, 9647, 7555, 3, 2, UNI_NV__23 } /* nv=23 */, + { 4, 9365, 2393, 4, 20, UNI_HMNP } /* scx=nyiakengpuachuehmong */, + { 18, 5760, 8400, 13, 4, UNI_NV__9000 } /* numericvalue=9000 */, + { 0, 9125, 995, 4, 2, -UNI_CWT } /* cwt=no */, + { 1, 21, 3164, 2, 9, UNI_LATINEXTA } /* inlatinexta */, + { 2, 9605, 6195, 3, 12, UNI_DT__NONCANON } /* dt=noncanonical */, + { 1, 184, 8114, 2, 7, UNI_KALI } /* iskayahli */, + { 6, 7892, 0, 4, 0, UNI_JAVA } /* java */, + { 0, 6888, 26, 10, 1, UNI_DIA } /* diacritic=y */, + { 2, 8886, 9145, 3, 4, UNI_DSRT } /* sc=dsrt */, + { 1, 8424, 2985, 7, 17, UNI_COPTICEPACTNUMBERS } /* block=copticepactnumbers */, + { 17, 1779, 995, 22, 2, -UNI_CWT } /* changeswhentitlecased=no */, + { 1, 9113, 8735, 5, 4, UNI_CCC__18 } /* ccc=ccc18 */, + { 17, 1362, 8810, 25, 4, UNI_CCC__33 } /* canonicalcombiningclass=ccc33 */, + { 8, 184, 1506, 2, 24, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* issupsymbolsandpictographs */, + { 0, 9093, 1410, 4, 24, UNI_DIACRITICALSFORSYMBOLS } /* blk=combiningmarksforsymbols */, + { 8, 9093, 6159, 4, 12, UNI_INMASARAMGONDI } /* blk=masaramgondi */, + { 2, 3739, 26, 17, 1, UNI_UIDEO } /* unifiedideograph=y */, + { 0, 184, 2169, 2, 11, UNI_MTEI } /* ismeeteimayek */, + { 1, 2798, 0, 19, 0, UNI_OTTOMANSIYAQNUMBERS } /* ottomansiyaqnumbers */, + { 2, 5085, 6053, 4, 5, UNI_MAHJONG } /* inmahjong */, + { 2, 3671, 493, 17, 3, UNI_HAN } /* scriptextensions=han */, + { 9, 184, 719, 2, 30, UNI_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumericsupplement */, + { 16, 8418, 3, 6, 1, -UNI_BIDIM } /* bidim=f */, + { 0, 1362, 8437, 25, 4, UNI_CCC__10 } /* canonicalcombiningclass=ccc10 */, + { 1, 9129, 36, 4, 1, UNI_CWU } /* cwu=t */, + { 0, 117, 2150, 4, 19, UNI_ININSCRIPTIONALPARTHIAN } /* ininscriptionalparthian */, + { 8, 8424, 6159, 6, 12, UNI_INMASARAMGONDI } /* block=masaramgondi */, + { 0, 3248, 8864, 6, 5, -UNI_XPOSIXSPACE } /* space=false */, + { 8, 8684, 995, 5, 2, -UNI_POSIXXDIGIT } /* ahex=no */, + { 8, 9647, 8664, 3, 4, UNI_NV__1_SLASH_16 } /* nv=1/16 */, + { 1, 9421, 0, 4, 0, UNI_TGLG } /* tglg */, + { 0, 5269, 1, 14, 1, -UNI_PATSYN } /* patternsyntax=n */, + { 3, 6005, 115, 4, 33, UNI_DIACRITICALSFORSYMBOLS } /* incombiningdiacriticalmarksforsymbols */, + { 0, 5895, 0, 12, 0, UNI_CYRILLICEXTC } /* cyrillicextc */, + { 4, 9659, 3, 3, 1, -UNI_RI } /* ri=f */, + { 11, 3688, 9433, 17, 4, UNI_STERM } /* sentenceterminal=true */, + { 0, 8424, 6382, 6, 6, UNI_DOMINO } /* block=domino */, + { 8, 3868, 74, 16, 2, UNI_ME } /* generalcategory=me */, + { 3, 6051, 0, 7, 0, UNI_MAHJONG } /* mahjong */, + { 0, 21, 8894, 2, 5, UNI_INLIMBU } /* inlimbu */, + { 1, 5435, 8864, 13, 5, -UNI_BIDIM } /* bidimirrored=false */, + { 1, 983, 0, 5, 0, UNI_GREK } /* greek */, + { 4, 9629, 3804, 3, 16, UNI_LB__CP } /* lb=closeparenthesis */, + { 1, 8332, 29, 4, 4, UNI_ARAB } /* isarabic */, + { 11, 8598, 9433, 6, 4, UNI__PERL_PATWS } /* patws=true */, + { 1, 1855, 0, 2, 0, UNI_CN } /* cn */, + { 2, 9113, 3441, 4, 5, UNI_CCC__B } /* ccc=below */, + { 0, 9940, 47, 5, 1, UNI_PERM } /* isperm */, + { 1, 8886, 9277, 3, 4, UNI_NBAT } /* sc=nbat */, + { 2, 8886, 8628, 3, 4, UNI_SC__THAA } /* sc=thaa */, + { 0, 9365, 9481, 4, 4, UNI_ZANB } /* scx=zanb */, + { 0, 2106, 881, 21, 1, UNI_GCB__V } /* graphemeclusterbreak=v */, + { 0, 2204, 8206, 3, 6, UNI_OSMA } /* isosmanya */, + { 1, 8640, 1, 6, 1, -UNI_XPOSIXUPPER } /* upper=n */, + { 4, 8424, 2169, 6, 21, UNI_MEETEIMAYEKEXT } /* block=meeteimayekextensions */, + { 8, 3671, 9353, 17, 4, UNI_RUNR } /* scriptextensions=runr */, + { 1, 8886, 1481, 3, 4, UNI_SC__SIND } /* sc=sind */, + { 0, 7025, 9006, 3, 3, UNI_IN__2_DOT_1 } /* in=2.1 */, + { 0, 9093, 8058, 4, 7, UNI_DSRT } /* blk=deseret */, + { 1, 1530, 0, 14, 0, UNI_BYZANTINEMUSIC } /* byzantinemusic */, + { 1, 3671, 9394, 18, 3, UNI_SYRC } /* scriptextensions=syrc */, + { 0, 8871, 34, 3, 2, UNI_SB__EX } /* sb=ex */, + { 0, 9093, 8532, 4, 6, UNI_KANBUN } /* blk=kanbun */, + { 8, 3671, 3020, 17, 4, UNI_DEVA } /* scriptextensions=deva */, + { 9, 8424, 0, 12, 0, UNI_INCARIAN } /* block=carian */, + { 1, 6315, 9433, 12, 4, UNI_XIDC } /* xidcontinue=true */, + { 0, 6885, 5346, 3, 3, UNI_HEBR } /* ishebr */, + { 10, 184, 6371, 2, 10, UNI_DEP } /* isdeprecated */, + { 0, 9725, 0, 3, 0, UNI_vo_values_index } /* vo= */, + { 8, 8424, 4076, 6, 16, UNI_MISCMATHSYMBOLSA } /* block=miscmathsymbolsa */, + { 0, 9647, 9584, 3, 3, UNI_NV__7_SLASH_8 } /* nv=7/8 */, + { 0, 8886, 9269, 3, 4, UNI_SC__MYMR } /* sc=mymr */, + { 3, 9093, 9253, 4, 4, UNI_INMIAO } /* blk=miao */, + { 6, 21, 4808, 3, 13, UNI_ANCIENTSYMBOLS } /* inancientsymbols */, + { 1, 9620, 3146, 3, 18, UNI_PI } /* gc=initialpunctuation */, + { 1, 1362, 7167, 24, 9, UNI_CCC__AL } /* canonicalcombiningclass=aboveleft */, + { 4, 8424, 7892, 6, 8, UNI_INJAVANESE } /* block=javanese */, + { 9, 8886, 6991, 3, 4, UNI_SC__SOGD } /* sc=sogd */, + { 2, 8424, 976, 6, 27, UNI_ANCIENTGREEKMUSIC } /* block=ancientgreekmusicalnotation */, + { 4, 6918, 4687, 10, 15, UNI_LB__OP } /* linebreak=openpunctuation */, + { 0, 184, 9205, 2, 4, UNI_KNDA } /* isknda */, + { 0, 2148, 3723, 3, 16, UNI_SUTTONSIGNWRITING } /* insuttonsignwriting */, + { 8, 3671, 8079, 17, 4, UNI_GRAN } /* scriptextensions=gran */, + { 1, 9365, 9165, 4, 4, UNI_GREK } /* scx=grek */, + { 10, 3020, 0, 4, 0, UNI_DEVA } /* deva */, + { 3, 8899, 36, 5, 1, UNI_MATH } /* math=t */, + { 0, 9093, 7876, 4, 8, UNI_JAMOEXTA } /* blk=jamoexta */, + { 0, 9647, 8664, 3, 5, UNI_NV__1_SLASH_160 } /* nv=1/160 */, + { 2, 184, 8604, 2, 5, UNI_QMARK } /* isqmark */, + { 1, 5760, 5409, 13, 3, UNI_NV__100 } /* numericvalue=100 */, + { 0, 1472, 0, 9, 0, UNI__PERL_SURROGATE } /* surrogate */, + { 0, 8233, 7860, 7, 8, UNI_SC__HIRA } /* script=hiragana */, + { 21, 3254, 26, 18, 1, UNI_RI } /* regionalindicator=y */, + { 0, 8886, 9413, 3, 4, UNI_TAVT } /* sc=tavt */, + { 0, 9093, 6051, 4, 7, UNI_MAHJONG } /* blk=mahjong */, + { 0, 7419, 26, 9, 1, UNI_XIDS } /* xidstart=y */, + { 0, 6316, 36, 11, 1, UNI_IDC } /* idcontinue=t */, + { 13, 184, 4432, 2, 15, UNI_DIACRITICALSSUP } /* isdiacriticalssup */, + { 11, 9593, 5811, 3, 12, UNI_BC__AL } /* bc=arabicletter */, + { 17, 5339, 138, 14, 2, UNI_SB__FO } /* sentencebreak=fo */, + { 2, 9629, 7212, 3, 9, UNI_LB__B2 } /* lb=breakboth */, + { 4, 8424, 8177, 6, 7, UNI_NB } /* block=noblock */, + { 0, 8233, 7365, 7, 4, UNI_PAUC } /* script=pauc */, + { 17, 184, 1085, 3, 24, UNI_CWKCF } /* ischangeswhennfkccasefolded */, + { 12, 8233, 6646, 7, 11, UNI_HMNG } /* script=pahawhhmong */, + { 0, 9605, 7, 3, 3, UNI_DT__CAN } /* dt=can */, + { 2, 9125, 0, 4, 0, UNI_cwt_values_index } /* cwt= */, + { 9, 8424, 2086, 7, 7, UNI_INCYRILLIC } /* block=cyrillic */, + { 1, 3671, 2212, 18, 3, UNI_SINH } /* scriptextensions=sinh */, + { 1, 9946, 9390, 3, 3, UNI_SOGO } /* issogo */, + { 1, 9365, 7860, 4, 8, UNI_HIRA } /* scx=hiragana */, + { 0, 8233, 3620, 7, 4, UNI_SC__MANI } /* script=mani */, + { 0, 184, 7812, 2, 8, UNI_DUPL } /* isduployan */, + { 0, 8163, 0, 8, 0, UNI_NFKCQC__N } /* nfkcqc=n */, + { 2, 4821, 0, 13, 0, UNI_POSIXXDIGIT } /* asciihexdigit */, + { 0, 9903, 9916, 6, 5, UNI_XPOSIXBLANK } /* xposixblank */, + { 0, 6316, 0, 10, 0, UNI_IDC } /* idcontinue */, + { 0, 9599, 9433, 3, 4, UNI_CI } /* ci=true */, + { 0, 8424, 6569, 6, 11, UNI_MISCSYMBOLS } /* block=miscsymbols */, + { 0, 6816, 3773, 3, 7, UNI_INBOPOMOFO } /* inbopomofo */, + { 1, 8424, 316, 6, 33, UNI_SUPMATHOPERATORS } /* block=supplementalmathematicaloperators */, + { 7, 6194, 8930, 3, 4, UNI_INOSAGE } /* inosage */, + { 3, 21, 7884, 2, 8, UNI_JAMOEXTB } /* injamoextb */, + { 1, 9093, 1823, 4, 19, UNI_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatideographs */, + { 0, 8424, 5907, 6, 12, UNI_ETHIOPICEXTA } /* block=ethiopicexta */, + { 0, 2493, 3380, 20, 18, UNI_VO__TU } /* verticalorientation=transformedupright */, + { 1, 5435, 1, 13, 1, -UNI_BIDIM } /* bidimirrored=n */, + { 3, 8869, 9734, 5, 3, UNI_IDSB } /* idsb=yes */, + { 17, 184, 808, 2, 29, UNI_MISCARROWS } /* ismiscellaneoussymbolsandarrows */, + { 0, 9365, 8944, 4, 5, UNI_TAKR } /* scx=takri */, + { 16, 9909, 7, 3, 1, UNI_PC } /* ispc */, + { 0, 184, 7892, 2, 4, UNI_JAVA } /* isjava */, + { 0, 184, 3445, 3, 2, UNI_CWL } /* iscwl */, + { 0, 2957, 0, 9, 0, UNI_HALFMARKS } /* halfmarks */, + { 0, 8510, 995, 4, 2, -UNI_EXT } /* ext=no */, + { 1, 6828, 2373, 10, 20, UNI_BC__LRE } /* bidiclass=lefttorightembedding */, + { 4, 8886, 4492, 3, 15, UNI_ARMI } /* sc=imperialaramaic */, + { 23, 1362, 7614, 24, 2, UNI_CCC__17 } /* canonicalcombiningclass=17 */, + { 1, 2453, 9734, 20, 3, UNI_TERM } /* terminalpunctuation=yes */, + { 62, 6371, 995, 11, 2, -UNI_DEP } /* deprecated=no */, + { 0, 3868, 4402, 16, 15, UNI_PD } /* generalcategory=dashpunctuation */, + { 0, 4778, 7099, 3, 9, UNI_CN } /* isunassigned */, + { 8, 3671, 3772, 17, 8, UNI_BOPO } /* scriptextensions=bopomofo */, + { 1, 184, 8526, 2, 6, UNI_KTHI } /* iskaithi */, + { 3, 6005, 690, 3, 8, UNI_INCUNEIFORM } /* incuneiform */, + { 5, 6828, 3218, 10, 18, UNI_BC__B } /* bidiclass=paragraphseparator */, + { 2, 9365, 9189, 4, 4, UNI_HMNP } /* scx=hmnp */, + { 0, 4821, 26, 14, 1, UNI_POSIXXDIGIT } /* asciihexdigit=y */, + { 0, 8886, 7788, 3, 4, UNI_BALI } /* sc=bali */, + { 2, 1481, 0, 4, 0, UNI_SIND } /* sind */, + { 14, 8886, 9401, 3, 4, UNI_SC__TALE } /* sc=tale */, + { 1, 8886, 8924, 3, 5, UNI_SC__ORYA } /* sc=oriya */, + { 1, 2708, 80, 4, 33, UNI_ARABICMATH } /* inarabicmathematicalalphabeticsymbols */, + { 1, 5760, 8364, 13, 3, UNI_NV__400 } /* numericvalue=400 */, + { 2, 184, 6051, 2, 4, UNI_MAHJ } /* ismahj */, + { 0, 8233, 4297, 7, 4, UNI_BRAI } /* script=brai */, + { 2, 9113, 8479, 5, 5, UNI_WB__EB } /* ccc=ccc133 */, + { 3, 9093, 7248, 4, 9, UNI_INKHUDAWADI } /* blk=khudawadi */, + { 8, 9365, 7049, 5, 9, UNI_SAUR } /* scx=saurashtra */, + { 2, 9647, 7548, 3, 8, UNI_NV__1_SLASH_32 } /* nv=3.12e-02 */, + { 0, 9946, 8262, 3, 6, UNI_SOYO } /* issoyombo */, + { 1, 8886, 9161, 3, 4, UNI_SC__GONM } /* sc=gonm */, + { 1, 184, 5448, 2, 13, UNI_BLOCKELEMENTS } /* isblockelements */, + { 0, 9093, 719, 4, 30, UNI_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumericsupplement */, + { 0, 1239, 8864, 25, 5, -UNI_COMPEX } /* fullcompositionexclusion=false */, + { 0, 8886, 7008, 3, 10, UNI_PHNX } /* sc=phoenician */, + { 14, 9141, 9734, 4, 3, UNI_DIA } /* dia=yes */, + { 12, 9647, 7540, 3, 2, UNI_NV__20 } /* nv=20 */, + { 4, 5760, 9749, 13, 2, UNI_NV__48 } /* numericvalue=48 */, + { 0, 9093, 4717, 4, 15, UNI_TAMILSUP } /* blk=tamilsupplement */, + { 0, 184, 1645, 2, 23, UNI_SHORTHANDFORMATCONTROLS } /* isshorthandformatcontrols */, + { 4, 8233, 4267, 7, 5, UNI_BAMU } /* script=bamum */, + { 1, 8424, 4297, 6, 15, UNI_BRAI } /* block=braillepatterns */, + { 1, 9953, 1696, 3, 2, UNI_VAI } /* isvai */, + { 2, 8418, 0, 6, 0, UNI_bidim_values_index } /* bidim= */, + { 0, 1362, 8795, 25, 4, UNI_CCC__30 } /* canonicalcombiningclass=ccc30 */, + { 1, 8884, 3484, 5, 17, UNI_INSC__CONSONANTPREFIXED } /* insc=consonantprefixed */, + { 0, 1713, 36, 22, 1, UNI_CWCF } /* changeswhencasefolded=t */, + { 4, 9049, 8993, 4, 4, UNI_AGE__10 } /* age=10.0 */, + { 3, 9113, 8805, 5, 4, UNI_CCC__32 } /* ccc=ccc32 */, + { 1, 6885, 4962, 3, 13, UNI_HIGHSURROGATES } /* ishighsurrogates */, + { 0, 6918, 9773, 10, 2, UNI_LB__XX } /* linebreak=xx */, + { 1, 2106, 7825, 21, 3, UNI_WB__EB } /* graphemeclusterbreak=gaz */, + { 3, 21, 977, 3, 26, UNI_ANCIENTGREEKMUSIC } /* inancientgreekmusicalnotation */, + { 2, 21, 7275, 2, 9, UNI_LATINEXTD } /* inlatinextd */, + { 3, 9113, 16, 4, 1, UNI_CCC__B } /* ccc=b */, + { 1, 6005, 2086, 3, 10, UNI_CYRILLICSUP } /* incyrillicsup */, + { 5, 8418, 26, 6, 1, UNI_BIDIM } /* bidim=y */, + { 17, 4462, 0, 14, 0, UNI_GREXT } /* graphemeextend */, + { 1, 3128, 3, 18, 1, -UNI_IDSB } /* idsbinaryoperator=f */, + { 1, 9365, 4792, 4, 15, UNI_ZANB } /* scx=zanabazarsquare */, + { 1, 1362, 8481, 24, 3, UNI_WB__EB } /* canonicalcombiningclass=133 */, + { 0, 8886, 57, 3, 2, UNI_SC__YI } /* sc=yi */, + { 0, 8955, 1, 4, 1, -UNI_IDC } /* idc=n */, + { 10, 3671, 8526, 17, 6, UNI_KTHI } /* scriptextensions=kaithi */, + { 14, 6005, 2931, 3, 10, UNI_CHEROKEESUP } /* incherokeesup */, + { 2, 21, 3290, 2, 18, UNI_RUMI } /* inruminumeralsymbols */, + { 0, 8424, 1867, 6, 22, UNI_DIACRITICALSFORSYMBOLS } /* block=diacriticalsforsymbols */, + { 0, 9237, 8864, 4, 5, -UNI_LOE } /* loe=false */, + { 0, 7018, 7487, 10, 1, UNI_IN__6 } /* presentin=6 */, + { 0, 3671, 2393, 17, 20, UNI_HMNP } /* scriptextensions=nyiakengpuachuehmong */, + { 0, 8051, 0, 6, 0, UNI_COMPEX } /* compex */, + { 0, 6885, 9182, 3, 3, UNI_HLUW } /* ishluw */, + { 1, 8424, 3164, 6, 9, UNI_LATINEXTA } /* block=latinexta */, + { 1, 9602, 1, 3, 1, -UNI_DI } /* di=n */, + { 2, 8879, 4777, 5, 15, UNI_LOE } /* inpc=visualorderleft */, + { 0, 1362, 7631, 24, 1, UNI_CCC__9 } /* canonicalcombiningclass=9 */, + { 18, 9593, 9614, 3, 3, UNI_BC__FSI } /* bc=fsi */, + { 19, 6005, 1847, 4, 20, UNI_INDICNUMBERFORMS } /* incommonindicnumberforms */, + { 0, 8233, 4220, 7, 4, UNI_TANG } /* script=tang */, + { 0, 8886, 7980, 3, 4, UNI_UGAR } /* sc=ugar */, + { 0, 3951, 6317, 3, 9, UNI_IDC } /* isidcontinue */, + { 0, 8424, 4172, 6, 16, UNI_SUPMATHOPERATORS } /* block=supmathoperators */, + { 6, 9647, 7716, 3, 8, UNI_NV__3_SLASH_4 } /* nv=7.50e-01 */, + { 1, 8871, 4140, 3, 5, UNI_SB__XX } /* sb=other */, + { 0, 8424, 7311, 6, 9, UNI_INNEWTAILUE } /* block=newtailue */, + { 0, 8886, 8550, 3, 4, UNI_LEPC } /* sc=lepc */, + { 0, 8886, 9281, 3, 4, UNI_NEWA } /* sc=newa */, + { 0, 8634, 8864, 6, 5, -UNI_UIDEO } /* uideo=false */, + { 0, 9093, 4792, 4, 15, UNI_INZANABAZARSQUARE } /* blk=zanabazarsquare */, + { 2, 3002, 8574, 18, 6, UNI_DT__NAR } /* decompositiontype=narrow */, + { 13, 7932, 995, 8, 2, -UNI_RADICAL } /* radical=no */, + { 9, 5269, 9734, 14, 3, UNI_PATSYN } /* patternsyntax=yes */, + { 2, 9647, 7628, 3, 8, UNI_NV__3_SLASH_64 } /* nv=4.69e-02 */, + { 10, 1977, 36, 22, 1, UNI__PERL_NCHAR } /* noncharactercodepoint=t */, + { 1, 8886, 8, 4, 3, UNI_SC__KANA } /* sc=kana */, + { 10, 8233, 7118, 7, 10, UNI_WARA } /* script=warangciti */, + { 10, 8634, 995, 6, 2, -UNI_UIDEO } /* uideo=no */, + { 2, 8424, 7772, 6, 8, UNI_INARMENIAN } /* block=armenian */, + { 1, 9093, 8310, 4, 7, UNI_INTIRHUTA } /* blk=tirhuta */, + { 1, 7194, 0, 9, 0, UNI_ARABICPFB } /* arabicpfb */, + { 8, 8233, 9401, 7, 4, UNI_SC__TALE } /* script=tale */, + { 0, 9647, 7631, 3, 1, UNI_NV__9 } /* nv=9 */, + { 1, 9946, 7049, 3, 3, UNI_SAUR } /* issaur */, + { 18, 8640, 9734, 6, 3, UNI_XPOSIXUPPER } /* upper=yes */, + { 7, 184, 9779, 2, 2, UNI_ZS } /* iszs */, + { 2, 3671, 8226, 17, 7, UNI_PHAG } /* scriptextensions=phagspa */, + { 1, 5760, 9500, 13, 3, UNI_NV__1_SLASH_7 } /* numericvalue=1/7 */, + { 0, 5269, 0, 14, 0, UNI_patsyn_values_index } /* patternsyntax= */, + { 0, 9605, 0, 3, 0, UNI_dt_values_index } /* dt= */, + { 2, 8886, 9065, 3, 4, UNI_ARMI } /* sc=armi */, + { 1, 7128, 1164, 10, 2, UNI_LB__LF } /* wordbreak=lf */, + { 9, 8709, 0, 5, 0, UNI_BUHD } /* buhid */, + { 1, 5760, 7676, 13, 8, UNI_NV__1_SLASH_16 } /* numericvalue=6.25e-02 */, + { 0, 6918, 9761, 10, 2, UNI_GCB__L } /* linebreak=jl */, + { 6, 9904, 9921, 5, 5, UNI_POSIXPRINT } /* posixprint */, + { 2, 5760, 5409, 13, 6, UNI_NV__100000 } /* numericvalue=100000 */, + { 0, 3951, 7421, 3, 6, UNI_IDS } /* isidstart */, + { 0, 9093, 8072, 4, 7, UNI_INELYMAIC } /* blk=elymaic */, + { 8, 8418, 995, 6, 2, -UNI_BIDIM } /* bidim=no */, + { 3, 184, 1780, 3, 20, UNI_CWT } /* ischangeswhentitlecased */, + { 12, 9093, 9650, 4, 3, UNI_OCR } /* blk=ocr */, + { 4, 9647, 8988, 3, 2, UNI_NV__41 } /* nv=41 */, + { 8, 7128, 2368, 10, 2, UNI_LB__HL } /* wordbreak=hl */, + { 9, 9153, 1164, 4, 2, UNI_LB__LF } /* gcb=lf */, + { 8, 8886, 8108, 4, 6, UNI_SC__KNDA } /* sc=kannada */, + { 0, 9113, 7763, 4, 2, UNI_CCC__19 } /* ccc=19 */, + { 1, 9647, 9029, 3, 4, UNI_NV__3_SLASH_64 } /* nv=3/64 */, + { 0, 2148, 7059, 3, 9, UNI_SMALLFORMS } /* insmallforms */, + { 2, 8684, 3, 5, 1, -UNI_POSIXXDIGIT } /* ahex=f */, + { 12, 9093, 2930, 4, 18, UNI_CHEROKEESUP } /* blk=cherokeesupplement */, + { 0, 5565, 5129, 13, 14, UNI_JG__MANICHAEANKAPH } /* joininggroup=manichaeankaph */, + { 17, 9093, 4252, 4, 15, UNI_ARABICEXTA } /* blk=arabicextendeda */, + { 5, 8233, 7980, 7, 8, UNI_UGAR } /* script=ugaritic */, + { 1, 8160, 2629, 4, 17, UNI_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumsup */, + { 0, 9093, 1188, 4, 26, UNI_KATAKANAEXT } /* blk=katakanaphoneticextensions */, + { 0, 8869, 0, 5, 0, UNI_idsb_values_index } /* idsb= */, + { 1, 9093, 1576, 4, 23, UNI_GEOMETRICSHAPESEXT } /* blk=geometricshapesextended */, + { 3, 9605, 9461, 3, 4, UNI_EA__F } /* dt=wide */, + { 0, 5760, 7724, 13, 8, UNI_NV__4_SLASH_5 } /* numericvalue=8.00e-01 */, + { 20, 8508, 26, 6, 1, UNI_GREXT } /* grext=y */, + { 3, 9093, 8628, 4, 6, UNI_INTHAANA } /* blk=thaana */, + { 1, 184, 3852, 2, 16, UNI_PF } /* isfinalpunctuation */, + { 1, 9113, 9545, 4, 3, UNI_CCC__IS } /* ccc=240 */, + { 1, 8884, 7972, 5, 8, UNI_INSC__TONEMARK } /* insc=tonemark */, + { 1, 8886, 8859, 3, 4, UNI_SC__DOGR } /* sc=dogr */, + { 4, 9365, 8550, 4, 4, UNI_LEPC } /* scx=lepc */, + { 3, 6918, 4877, 10, 14, UNI_LB__SA } /* linebreak=complexcontext */, + { 0, 3671, 9213, 17, 4, UNI_LANA } /* scriptextensions=lana */, + { 1, 3671, 6724, 18, 3, UNI_SYLO } /* scriptextensions=sylo */, + { 11, 1768, 0, 5, 0, UNI_XPOSIXLOWER } /* lower */, + { 1, 5085, 0, 12, 0, UNI_INMANICHAEAN } /* inmanichaean */, + { 1, 7365, 0, 9, 0, UNI_PAUC } /* paucinhau */, + { 0, 8617, 0, 5, 0, UNI_term_values_index } /* term= */, + { 11, 9731, 5346, 3, 2, UNI_WB__EB } /* wb=eb */, + { 0, 8634, 26, 6, 1, UNI_UIDEO } /* uideo=y */, + { 0, 8424, 7203, 6, 9, UNI_INBHAIKSUKI } /* block=bhaiksuki */, + { 4, 4462, 36, 15, 1, UNI_GREXT } /* graphemeextend=t */, + { 0, 8233, 8205, 7, 7, UNI_OSMA } /* script=osmanya */, + { 1, 3671, 8205, 17, 4, UNI_OSMA } /* scriptextensions=osma */, + { 0, 9093, 8679, 4, 5, UNI_INADLAM } /* blk=adlam */, + { 10, 8705, 7814, 4, 6, UNI_INDUPLOYAN } /* induployan */, + { 0, 8424, 7844, 6, 8, UNI_INGUJARATI } /* block=gujarati */, + { 14, 9365, 9285, 4, 4, UNI_NKO } /* scx=nkoo */, + { 12, 9417, 0, 4, 0, UNI_TFNG } /* tfng */, + { 15, 8233, 4205, 8, 5, UNI_SC__SYRC } /* script=syriac */, + { 2, 4580, 2171, 4, 12, UNI_MEETEIMAYEKEXT } /* inmeeteimayekext */, + { 1, 3671, 2353, 17, 20, UNI_PHLI } /* scriptextensions=inscriptionalpahlavi */, + { 9, 9647, 7476, 3, 8, UNI_NV__3_SLASH_20 } /* nv=1.50e-01 */, + { 0, 9237, 3, 4, 1, -UNI_LOE } /* loe=f */, + { 8, 3671, 7311, 17, 9, UNI_TALU } /* scriptextensions=newtailue */, + { 1, 1362, 7507, 24, 2, UNI_CCC__12 } /* canonicalcombiningclass=12 */, + { 1, 8424, 114, 7, 34, UNI_DIACRITICALSFORSYMBOLS } /* block=combiningdiacriticalmarksforsymbols */, + { 0, 8886, 7048, 3, 4, UNI_SAUR } /* sc=saur */, + { 0, 8332, 3417, 3, 16, UNI_ALCHEMICAL } /* isalchemicalsymbols */, + { 1, 9233, 0, 4, 0, UNI_LISU } /* lisu */, + { 1, 2589, 0, 11, 0, UNI_COUNTINGROD } /* countingrod */, + { 3, 8886, 7356, 3, 9, UNI_PALM } /* sc=palmyrene */, + { 0, 1911, 1214, 22, 9, UNI_INSC__CONSONANT } /* indicsyllabiccategory=consonant */, + { 0, 184, 3996, 2, 16, UNI_LINEARBSYLLABARY } /* islinearbsyllabary */, + { 0, 9647, 7484, 3, 8, UNI_NV__1_SLASH_64 } /* nv=1.56e-02 */, + { 0, 9650, 0, 3, 0, UNI_OCR } /* ocr */, + { 1, 3951, 2149, 3, 20, UNI_PRTI } /* isinscriptionalparthian */, + { 9, 8899, 8864, 5, 5, -UNI_MATH } /* math=false */, + { 8, 1924, 0, 10, 0, UNI_L } /* category=l */, + { 0, 8871, 0, 3, 0, UNI_sb_values_index } /* sb= */, + { 20, 8424, 3038, 6, 11, UNI_ETHIOPICSUP } /* block=ethiopicsup */, + { 0, 9093, 5734, 4, 13, UNI_MISCTECHNICAL } /* blk=misctechnical */, + { 5, 7128, 6668, 10, 11, UNI_WB__SQ } /* wordbreak=singlequote */, + { 11, 7025, 7612, 3, 3, UNI_IN__4_DOT_1 } /* in=4.1 */, + { 0, 8424, 837, 6, 18, UNI_PHONETICEXT } /* block=phoneticextensions */, + { 9, 8849, 9734, 5, 3, UNI_CWCM } /* cwcm=yes */, + { 5, 3469, 0, 4, 0, UNI_UCAS } /* ucas */, + { 0, 5760, 9743, 13, 2, UNI_NV__45 } /* numericvalue=45 */, + { 5, 2930, 0, 8, 0, UNI_CHER } /* cherokee */, + { 6, 1362, 9512, 24, 3, UNI_CCC__202 } /* canonicalcombiningclass=202 */, + { 1, 9093, 2779, 4, 9, UNI_INMONGOLIAN } /* blk=mongolian */, + { 12, 9620, 45, 3, 2, UNI_CO } /* gc=co */, + { 5, 6194, 6244, 3, 11, UNI_INOLDHUNGARIAN } /* inoldhungarian */, + { 1, 8424, 3200, 6, 18, UNI_ORNAMENTALDINGBATS } /* block=ornamentaldingbats */, + { 0, 9620, 400, 3, 6, UNI_CF } /* gc=format */, + { 7, 3002, 9665, 18, 3, UNI_DT__SML } /* decompositiontype=sml */, + { 15, 5565, 5101, 13, 14, UNI_JG__MANICHAEANFIVE } /* joininggroup=manichaeanfive */, + { 0, 8424, 7995, 6, 7, UNI_INAVESTAN } /* block=avestan */, + { 1, 3002, 1362, 18, 9, UNI_DT__CAN } /* decompositiontype=canonical */, + { 17, 9113, 8800, 5, 4, UNI_CCC__31 } /* ccc=ccc31 */, + { 0, 8233, 57, 7, 2, UNI_SC__YI } /* script=yi */, + { 8, 1362, 8469, 24, 3, UNI_CCC__130 } /* canonicalcombiningclass=130 */, + { 2, 9093, 6243, 4, 12, UNI_INOLDHUNGARIAN } /* blk=oldhungarian */, + { 14, 1362, 9521, 24, 3, UNI_CCC__BR } /* canonicalcombiningclass=222 */, + { 2, 9593, 426, 3, 2, UNI_BC__ES } /* bc=es */, + { 3, 4747, 0, 15, 0, UNI_UPPERCASELETTER } /* uppercaseletter */, + { 5, 8275, 0, 7, 0, UNI_SUPPUAB } /* suppuab */, + { 3, 9473, 0, 4, 0, UNI_YI } /* yiii */, + { 6, 184, 3620, 2, 4, UNI_MANI } /* ismani */, + { 3, 9365, 2212, 5, 3, UNI_SINH } /* scx=sinh */, + { 7, 9093, 1188, 4, 8, UNI_INKATAKANA } /* blk=katakana */, + { 2, 9725, 3391, 3, 7, UNI_VO__U } /* vo=upright */, + { 0, 3671, 8114, 17, 7, UNI_KALI } /* scriptextensions=kayahli */, + { 5, 9113, 8, 4, 1, UNI_CCC__A } /* ccc=a */, + { 1, 6194, 4673, 3, 14, UNI_SARB } /* inoldsoutharabian */, + { 0, 8332, 97, 3, 9, UNI_XPOSIXALPHA } /* isalphabetic */, + { 9, 9285, 0, 3, 0, UNI_NKO } /* nko */, + { 2, 3671, 9177, 17, 4, UNI_HANO } /* scriptextensions=hano */, + { 17, 9113, 2920, 4, 10, UNI_CCC__AR } /* ccc=aboveright */, + { 0, 8886, 9109, 3, 4, UNI_CANS } /* sc=cans */, + { 0, 9113, 8830, 5, 4, UNI_CCC__84 } /* ccc=ccc84 */, + { 0, 8424, 7257, 6, 9, UNI_LATINEXTB } /* block=latinextb */, + { 0, 8424, 3900, 6, 16, UNI_HALFANDFULLFORMS } /* block=halfandfullforms */, + { 18, 8886, 2333, 3, 4, UNI_SC__GLAG } /* sc=glag */, + { 3, 21, 8538, 2, 6, UNI_INKHOJKI } /* inkhojki */, + { 0, 3671, 7347, 17, 9, UNI_ORKH } /* scriptextensions=oldturkic */, + { 15, 5760, 8802, 13, 2, UNI_NV__31 } /* numericvalue=31 */, + { 0, 9093, 1851, 4, 16, UNI_INDICNUMBERFORMS } /* blk=indicnumberforms */, + { 6, 9365, 7804, 4, 4, UNI_BUGI } /* scx=bugi */, + { 24, 9365, 9269, 4, 4, UNI_MYMR } /* scx=mymr */, + { 2, 4447, 1, 15, 1, UNI_EA__N } /* eastasianwidth=n */, + { 1, 133, 0, 4, 0, UNI_M } /* mark */, + { 1, 6005, 8024, 3, 6, UNI_CJKEXTC } /* incjkextc */, + { 0, 8617, 1, 5, 1, -UNI_TERM } /* term=n */, + { 12, 6005, 690, 3, 29, UNI_CUNEIFORMNUMBERS } /* incuneiformnumbersandpunctuation */, + { 5, 8886, 8142, 3, 4, UNI_MARC } /* sc=marc */, + { 0, 9093, 1576, 4, 18, UNI_GEOMETRICSHAPESEXT } /* blk=geometricshapesext */, + { 1, 9365, 8065, 4, 4, UNI_ELBA } /* scx=elba */, + { 1, 8886, 6159, 3, 12, UNI_SC__GONM } /* sc=masaramgondi */, + { 0, 8233, 8562, 7, 4, UNI_LYCI } /* script=lyci */, + { 1, 8233, 8514, 7, 6, UNI_HATR } /* script=hatran */, + { 1, 184, 4989, 2, 6, UNI_KANGXI } /* iskangxi */, + { 4, 1362, 184, 24, 2, UNI_CCC__IS } /* canonicalcombiningclass=is */, + { 1, 184, 510, 3, 29, UNI_CJKEXTA } /* iscjkunifiedideographsextensiona */, + { 22, 9647, 8985, 3, 3, UNI_NV__1_SLASH_6 } /* nv=1/6 */, + { 0, 4140, 0, 5, 0, UNI_C } /* other */, + { 1, 2148, 2212, 3, 20, UNI_SINHALAARCHAICNUMBERS } /* insinhalaarchaicnumbers */, + { 3, 8424, 1856, 6, 11, UNI_NUMBERFORMS } /* block=numberforms */, + { 4, 3671, 8241, 18, 6, UNI_SHRD } /* scriptextensions=sharada */, + { 1, 9093, 2333, 4, 10, UNI_INGLAGOLITIC } /* blk=glagolitic */, + { 3, 8072, 0, 4, 0, UNI_ELYM } /* elym */, + { 0, 9608, 8, 3, 1, UNI_EA__A } /* ea=a */, + { 0, 9946, 9386, 3, 3, UNI_SHRD } /* isshrd */, + { 0, 1362, 16, 24, 1, UNI_CCC__B } /* canonicalcombiningclass=b */, + { 3, 9623, 3654, 3, 17, UNI_JG__MANICHAEANTHAMEDH } /* jg=manichaeanthamedh */, + { 7, 9093, 3603, 4, 17, UNI_LETTERLIKESYMBOLS } /* blk=letterlikesymbols */, + { 0, 184, 2086, 3, 7, UNI_CYRL } /* iscyrillic */, + { 0, 1243, 9433, 21, 4, UNI_CE } /* compositionexclusion=true */, + { 0, 7185, 0, 9, 0, UNI_ARABICPFA } /* arabicpfa */, + { 0, 7419, 8864, 9, 5, -UNI_XIDS } /* xidstart=false */, + { 40, 7025, 7436, 3, 3, UNI_IN__1_DOT_1 } /* in=1.1 */, + { 1, 8424, 719, 6, 16, UNI_ENCLOSEDALPHANUM } /* block=enclosedalphanum */, + { 0, 9097, 0, 4, 0, UNI_bpt_values_index } /* bpt= */, + { 3, 21, 7118, 2, 10, UNI_INWARANGCITI } /* inwarangciti */, + { 0, 3128, 9433, 18, 4, UNI_IDSB } /* idsbinaryoperator=true */, + { 0, 8233, 9409, 7, 4, UNI_SC__TAML } /* script=taml */, + { 0, 9365, 9101, 4, 4, UNI_BUHD } /* scx=buhd */, + { 10, 8886, 9241, 3, 4, UNI_MEDF } /* sc=medf */, + { 0, 9623, 4567, 3, 15, UNI_JG__MANICHAEANZAYIN } /* jg=manichaeanzayin */, + { 6, 7018, 7159, 10, 3, UNI_IN__5 } /* presentin=5.0 */, + { 0, 3868, 1508, 16, 2, UNI_PS } /* generalcategory=ps */, + { 1, 3671, 9249, 17, 4, UNI_MERC } /* scriptextensions=merc */, + { 1, 8051, 3, 7, 1, -UNI_COMPEX } /* compex=f */, + { 0, 8424, 8924, 6, 5, UNI_INORIYA } /* block=oriya */, + { 0, 9623, 6756, 3, 11, UNI_JG__YEHWITHTAIL } /* jg=yehwithtail */, + { 1, 8496, 3, 6, 1, -UNI_CWKCF } /* cwkcf=f */, + { 0, 7128, 72, 10, 2, UNI_WB__LE } /* wordbreak=le */, + { 1, 9647, 9517, 3, 2, UNI_NV__42 } /* nv=42 */, + { 1, 7018, 9683, 10, 3, UNI_IN__3_DOT_1 } /* presentin=v31 */, + { 1, 9662, 36, 3, 1, UNI_SD } /* sd=t */, + { 0, 8114, 0, 7, 0, UNI_KALI } /* kayahli */, + { 19, 5760, 7556, 13, 8, UNI_NV__1_SLASH_32 } /* numericvalue=3.13e-02 */, + { 0, 2204, 7331, 4, 7, UNI_ITAL } /* isolditalic */, + { 1, 9093, 4220, 4, 6, UNI_INTANGUT } /* blk=tangut */, + { 3, 9113, 7459, 4, 2, UNI_CCC__21 } /* ccc=21 */, + { 5, 8424, 2760, 6, 19, UNI_MODIFIERTONELETTERS } /* block=modifiertoneletters */, + { 9, 9620, 1036, 3, 2, UNI_CASEDLETTER } /* gc=lc */, + { 18, 8424, 2513, 6, 19, UNI_ANCIENTGREEKNUMBERS } /* block=ancientgreeknumbers */, + { 3, 3671, 8914, 17, 5, UNI_NSHU } /* scriptextensions=nushu */, + { 77, 9153, 5944, 5, 11, UNI_WB__EB } /* gcb=glueafterzwj */, + { 3, 8886, 7964, 3, 8, UNI_TFNG } /* sc=tifinagh */, + { 0, 2684, 0, 19, 0, UNI_hst_values_index } /* hangulsyllabletype= */, + { 0, 8424, 2931, 7, 7, UNI_INCHEROKEE } /* block=cherokee */, + { 0, 8508, 3, 6, 1, -UNI_GREXT } /* grext=f */, + { 16, 3671, 8562, 17, 4, UNI_LYCI } /* scriptextensions=lyci */, + { 0, 9113, 4701, 4, 2, UNI_CCC__0 } /* ccc=nr */, + { 21, 6918, 5953, 10, 2, UNI_LB__WJ } /* linebreak=wj */, + { 2, 8616, 0, 5, 0, UNI_STERM } /* sterm */, + { 16, 184, 0, 3, 0, UNI_C } /* isc */, + { 1, 9623, 6536, 3, 11, UNI_JG__MALAYALAMJA } /* jg=malayalamja */, + { 16, 4361, 1578, 4, 21, UNI_GEOMETRICSHAPESEXT } /* ingeometricshapesextended */, + { 16, 8886, 9185, 3, 4, UNI_HMNG } /* sc=hmng */, + { 14, 1158, 2022, 3, 14, UNI_TRANSPORTANDMAP } /* intransportandmap */, + { 20, 8886, 9353, 3, 4, UNI_RUNR } /* sc=runr */, + { 1, 9093, 8107, 4, 7, UNI_INKANNADA } /* blk=kannada */, + { 5, 9093, 6316, 4, 3, UNI_INIDC } /* blk=idc */, + { 13, 3671, 8262, 18, 3, UNI_SOYO } /* scriptextensions=soyo */, + { 6, 9093, 878, 4, 10, UNI_PUA } /* blk=privateuse */, + { 4, 8924, 0, 5, 0, UNI_ORYA } /* oriya */, + { 5, 9620, 4507, 3, 15, UNI_LOWERCASELETTER } /* gc=lowercaseletter */, + { 3, 3948, 922, 3, 27, UNI_VSSUP } /* invariationselectorssupplement */, + { 0, 4705, 8304, 3, 6, UNI_TIBT } /* istibetan */, + { 1, 3671, 9085, 17, 4, UNI_BATK } /* scriptextensions=batk */, + { 30, 1497, 0, 9, 0, UNI_gc_values_index } /* category= */, + { 4, 8556, 3, 6, 1, -UNI_XPOSIXLOWER } /* lower=f */, + { 0, 7025, 9437, 3, 4, UNI_IN__10 } /* in=v100 */, + { 0, 5760, 8388, 13, 4, UNI_NV__7000 } /* numericvalue=7000 */, + { 0, 8233, 7332, 7, 4, UNI_ITAL } /* script=ital */, + { 1, 8886, 9285, 3, 3, UNI_NKO } /* sc=nko */, + { 17, 9605, 2204, 3, 3, UNI_DT__ISO } /* dt=iso */, + { 0, 9901, 6316, 3, 3, UNI_XIDC } /* isxidc */, + { 0, 9620, 6039, 3, 12, UNI_NL } /* gc=letternumber */, + { 0, 5269, 995, 14, 2, -UNI_PATSYN } /* patternsyntax=no */, + { 2, 9113, 9527, 4, 3, UNI_CCC__R } /* ccc=226 */, + { 0, 8051, 0, 7, 0, UNI_compex_values_index } /* compex= */, + { 0, 2148, 1669, 3, 22, UNI_SUPPUNCTUATION } /* insupplementalpunctuation */, + { 7, 8424, 6767, 6, 11, UNI_YISYLLABLES } /* block=yisyllables */, + { 2, 9731, 7284, 3, 9, UNI_WB__ML } /* wb=midletter */, + { 23, 8886, 7302, 3, 9, UNI_NBAT } /* sc=nabataean */, + { 0, 9365, 4946, 4, 4, UNI_CHAM } /* scx=cham */, + { 16, 1955, 0, 22, 0, UNI_MISCTECHNICAL } /* miscellaneoustechnical */, + { 0, 1362, 7435, 24, 2, UNI_CCC__11 } /* canonicalcombiningclass=11 */, + { 4, 9781, 6316, 6, 6, UNI__PERL_IDCONT } /* _perl_idcont */, + { 21, 184, 3884, 2, 16, UNI_GEORGIANEXT } /* isgeorgianextended */, + { 2, 1362, 6818, 24, 10, UNI_CCC__BR } /* canonicalcombiningclass=belowright */, + { 0, 3671, 6898, 17, 4, UNI_KHAR } /* scriptextensions=khar */, + { 17, 1691, 17, 22, 1, UNI_BPT__O } /* bidipairedbrackettype=o */, + { 6, 8854, 36, 5, 1, UNI_DASH } /* dash=t */, + { 0, 2142, 16, 3, 1, UNI_NB } /* innb */, + { 1, 184, 4092, 2, 16, UNI_MISCMATHSYMBOLSB } /* ismiscmathsymbolsb */, + { 0, 3671, 3467, 17, 17, UNI_AGHB } /* scriptextensions=caucasianalbanian */, + { 2, 5213, 8904, 14, 5, UNI_NFCQC__M } /* nfcquickcheck=maybe */, + { 0, 184, 3772, 2, 11, UNI_BOPOMOFOEXT } /* isbopomofoext */, + { 3, 9217, 0, 4, 0, UNI_LAO } /* laoo */, + { 3, 2148, 2856, 3, 18, UNI_SUPARROWSA } /* insupplementalarrowsa */, + { 1, 8233, 4672, 7, 15, UNI_SARB } /* script=oldsoutharabian */, + { 3, 9093, 183, 4, 20, UNI_MISCSYMBOLS } /* blk=miscellaneoussymbols */, + { 1, 9731, 7293, 3, 6, UNI_WB__MN } /* wb=midnum */, + { 3, 3868, 3852, 16, 16, UNI_PF } /* generalcategory=finalpunctuation */, + { 5, 2106, 18, 21, 2, UNI_RI } /* graphemeclusterbreak=ri */, + { 0, 8886, 9157, 3, 4, UNI_SC__GONG } /* sc=gong */, + { 1, 2204, 1031, 3, 26, UNI_OCR } /* isopticalcharacterrecognition */, + { 3, 184, 1239, 2, 24, UNI_COMPEX } /* isfullcompositionexclusion */, + { 8, 3293, 1, 3, 33, UNI_UCAS } /* inunifiedcanadianaboriginalsyllabics */, + { 10, 4778, 1813, 3, 8, UNI_XPOSIXUPPER } /* isuppercase */, + { 5, 9365, 7796, 4, 4, UNI_BASS } /* scx=bass */, + { 2, 9093, 893, 4, 28, UNI_SUPPUAB } /* blk=supplementaryprivateuseareab */, + { 0, 5760, 9745, 13, 2, UNI_NV__46 } /* numericvalue=46 */, + { 0, 9153, 7820, 4, 8, UNI_WB__EB } /* gcb=ebasegaz */, + { 11, 8233, 835, 10, 1, UNI_SHAW } /* script=shaw */, + { 2, 5760, 5409, 13, 4, UNI_NV__1000 } /* numericvalue=1000 */, + { 1, 8233, 5955, 7, 12, UNI_SC__GONG } /* script=gunjalagondi */, + { 1, 9728, 1, 3, 1, -UNI_VS } /* vs=n */, + { 0, 5760, 9001, 13, 4, UNI_NV__11_SLASH_2 } /* numericvalue=11/2 */, + { 2, 184, 567, 2, 2, UNI_NB } /* isnb */, + { 11, 9623, 7828, 3, 8, UNI_JG__FARSIYEH } /* jg=farsiyeh */, + { 0, 8233, 4267, 7, 4, UNI_BAMU } /* script=bamu */, + { 0, 2142, 9282, 3, 3, UNI_INNEWA } /* innewa */, + { 8, 184, 6183, 2, 4, UNI_MEND } /* ismend */, + { 0, 9383, 8242, 4, 5, UNI_INSHARADA } /* insharada */, + { 1, 8233, 8484, 7, 6, UNI_SC__CAKM } /* script=chakma */, + { 0, 5565, 6135, 13, 12, UNI_JG__MALAYALAMTTA } /* joininggroup=malayalamtta */, + { 0, 8219, 9433, 7, 4, UNI_PATSYN } /* patsyn=true */, + { 11, 184, 3705, 2, 17, UNI_SMALLFORMS } /* issmallformvariants */, + { 1, 9731, 7825, 3, 3, UNI_WB__EB } /* wb=gaz */, + { 0, 1159, 5678, 3, 4, UNI_NV__NAN } /* nt=none */, + { 0, 9647, 8674, 3, 5, UNI_NV__11_SLASH_12 } /* nv=11/12 */, + { 0, 184, 3210, 2, 8, UNI_DINGBATS } /* isdingbats */, + { 8, 5760, 7748, 13, 8, UNI_NV__17_SLASH_2 } /* numericvalue=8.50e+00 */, + { 0, 5085, 5723, 4, 11, UNI_MAYANNUMERALS } /* inmayannumerals */, + { 1, 5760, 9025, 13, 4, UNI_NV__3_SLASH_20 } /* numericvalue=3/20 */, + { 16, 7025, 9698, 3, 3, UNI_IN__5_DOT_1 } /* in=v51 */, + { 4, 9081, 0, 4, 0, UNI_AVST } /* avst */, + { 0, 8532, 0, 6, 0, UNI_KANBUN } /* kanbun */, + { 1, 8871, 7383, 3, 9, UNI_SB__SC } /* sb=scontinue */, + { 0, 9365, 8241, 5, 6, UNI_SHRD } /* scx=sharada */, + { 8, 9593, 2433, 3, 11, UNI_BC__R } /* bc=righttoleft */, + { 3, 9620, 9775, 3, 2, UNI_ZL } /* gc=zl */, + { 8, 8886, 7772, 3, 8, UNI_SC__ARMN } /* sc=armenian */, + { 0, 5760, 8817, 13, 2, UNI_NV__34 } /* numericvalue=34 */, + { 96, 8233, 9285, 7, 4, UNI_NKO } /* script=nkoo */, + { 2, 8424, 2393, 6, 20, UNI_INNYIAKENGPUACHUEHMONG } /* block=nyiakengpuachuehmong */, + { 0, 9647, 8400, 3, 2, UNI_NV__90 } /* nv=90 */, + { 1, 8954, 36, 5, 1, UNI_XIDC } /* xidc=t */, + { 0, 8635, 3, 5, 1, -UNI_IDEO } /* ideo=f */, + { 6, 6918, 7202, 10, 2, UNI_LB__BB } /* linebreak=bb */, + { 2, 446, 0, 18, 0, UNI_IDEOGRAPHICSYMBOLS } /* ideographicsymbols */, + { 2, 2148, 7089, 3, 9, UNI_SUPARROWSC } /* insuparrowsc */, + { 0, 8424, 8058, 6, 7, UNI_DSRT } /* block=deseret */, + { 3, 9049, 9587, 4, 3, UNI_AGE__9 } /* age=9.0 */, + { 0, 9725, 471, 3, 2, UNI_VO__TU } /* vo=tu */, + { 1, 9365, 8114, 4, 7, UNI_KALI } /* scx=kayahli */, + { 1, 8424, 1003, 6, 27, UNI_ENCLOSEDCJK } /* block=enclosedcjklettersandmonths */, + { 8, 184, 1867, 2, 12, UNI_DIACRITICALS } /* isdiacriticals */, + { 1, 6005, 8045, 3, 6, UNI_CJKEXTF } /* incjkextf */, + { 24, 9647, 8669, 3, 3, UNI_NV__1_SLASH_3 } /* nv=1/3 */, + { 82, 8424, 7356, 6, 9, UNI_PALM } /* block=palmyrene */, + { 22, 6679, 36, 11, 1, UNI_SD } /* softdotted=t */, + { 15, 4826, 0, 9, 0, UNI_hex_values_index } /* hexdigit= */, + { 0, 9093, 8929, 4, 5, UNI_INOSAGE } /* blk=osage */, + { 2, 6885, 4827, 3, 7, UNI_XPOSIXXDIGIT } /* ishexdigit */, + { 8, 5339, 495, 14, 2, UNI_SB__NU } /* sentencebreak=nu */, + { 4, 8879, 879, 3, 13, UNI_PUA } /* inprivateusearea */, + { 1, 5760, 7636, 13, 8, UNI_NV__1_SLASH_20 } /* numericvalue=5.00e-02 */, + { 7, 8886, 2779, 3, 9, UNI_SC__MONG } /* sc=mongolian */, + { 1, 1977, 1, 22, 1, -UNI__PERL_NCHAR } /* noncharactercodepoint=n */, + { 5, 9113, 8909, 4, 5, UNI_CCC__7 } /* ccc=nukta */, + { 8, 4863, 0, 14, 0, UNI_CJKCOMPATFORMS } /* cjkcompatforms */, + { 0, 8424, 3110, 6, 18, UNI_GEORGIANSUP } /* block=georgiansupplement */, + { 0, 8886, 6988, 3, 10, UNI_SOGO } /* sc=oldsogdian */, + { 2, 184, 9221, 2, 4, UNI_LATN } /* islatn */, + { 45, 1362, 8358, 24, 2, UNI_CCC__30 } /* canonicalcombiningclass=30 */, + { 7, 6567, 831, 6, 6, UNI_MISCARROWS } /* inmiscarrows */, + { 1, 1136, 1, 26, 1, -UNI_DI } /* defaultignorablecodepoint=n */, + { 17, 9623, 9617, 3, 3, UNI_JG__GAF } /* jg=gaf */, + { 0, 9469, 0, 4, 0, UNI_XSUX } /* xsux */, + { 0, 8233, 8128, 7, 4, UNI_MAKA } /* script=maka */, + { 0, 7128, 108, 10, 2, UNI_WB__MB } /* wordbreak=mb */, + { 1, 7108, 3, 10, 1, -UNI_XPOSIXUPPER } /* uppercase=f */, + { 1, 184, 540, 3, 29, UNI_CJKEXTB } /* iscjkunifiedideographsextensionb */, + { 1, 5760, 8376, 13, 4, UNI_NV__5000 } /* numericvalue=5000 */, + { 4, 1362, 9524, 24, 3, UNI_CCC__L } /* canonicalcombiningclass=224 */, + { 3, 9365, 7844, 4, 8, UNI_GUJR } /* scx=gujarati */, + { 73, 8424, 78, 6, 6, UNI_INARABIC } /* block=arabic */, + { 0, 7230, 36, 9, 1, UNI_EXT } /* extender=t */, + { 9, 8424, 8107, 6, 7, UNI_INKANNADA } /* block=kannada */, + { 17, 6918, 9763, 10, 2, UNI_GCB__V } /* linebreak=jv */, + { 23, 9093, 2513, 4, 19, UNI_ANCIENTGREEKNUMBERS } /* blk=ancientgreeknumbers */, + { 1, 8424, 6591, 6, 11, UNI_MYANMAREXTB } /* block=myanmarextb */, + { 0, 8233, 8289, 7, 7, UNI_LANA } /* script=taitham */, + { 0, 9365, 4297, 4, 4, UNI_BRAI } /* scx=brai */, + { 0, 8886, 3038, 3, 8, UNI_ETHI } /* sc=ethiopic */, + { 3, 9647, 9747, 3, 2, UNI_NV__47 } /* nv=47 */, + { 0, 5760, 7764, 13, 8, UNI_NV__11_SLASH_12 } /* numericvalue=9.17e-01 */, + { 1, 184, 5500, 2, 13, UNI_ME } /* isenclosingmark */, + { 9, 9113, 8461, 5, 5, UNI_CCC__129 } /* ccc=ccc129 */, + { 14, 8580, 0, 7, 0, -UNI__PERL_NCHAR } /* nchar=n */, + { 0, 3671, 9045, 17, 4, UNI_ADLM } /* scriptextensions=adlm */, + { 2, 8412, 26, 6, 1, UNI_BIDIC } /* bidic=y */, + { 0, 9623, 6852, 3, 3, UNI_JG__KAF } /* jg=kaf */, + { 11, 5760, 7524, 13, 8, UNI_NV__1_SLASH_4 } /* numericvalue=2.50e-01 */, + { 129, 9113, 7603, 4, 2, UNI_CCC__24 } /* ccc=24 */, + { 0, 4361, 3112, 4, 16, UNI_GEORGIANSUP } /* ingeorgiansupplement */, + { 1, 3254, 0, 17, 0, UNI_RI } /* regionalindicator */, + { 1, 8886, 7956, 3, 4, UNI_SC__TAGB } /* sc=tagb */, + { 8, 184, 27, 2, 2, UNI_LOWERCASELETTER } /* isll */, + { 7, 2142, 8190, 3, 2, UNI_INNKO } /* innko */, + { 3, 5565, 8890, 14, 4, UNI_JG__KHAPH } /* joininggroup=khaph */, + { 0, 3951, 4493, 3, 14, UNI_ARMI } /* isimperialaramaic */, + { 11, 4821, 0, 5, 0, UNI_ASCII } /* ascii */, + { 2, 9777, 0, 2, 0, UNI_ZP } /* zp */, + { 0, 9909, 9921, 7, 5, UNI_POSIXPRINT } /* isposixprint */, + { 0, 2212, 3903, 5, 13, UNI_HALFANDFULLFORMS } /* inhalfandfullforms */, + { 1, 9113, 8439, 4, 3, UNI_CCC__103 } /* ccc=103 */, + { 2, 184, 1, 2, 1, UNI_N } /* isn */, + { 0, 5435, 0, 13, 0, UNI_bidim_values_index } /* bidimirrored= */, + { 0, 9593, 24, 3, 1, UNI_BC__L } /* bc=l */, + { 1, 9731, 4140, 3, 5, UNI_WB__XX } /* wb=other */, + { 2, 9903, 467, 6, 5, UNI_XPOSIXPUNCT } /* xposixpunct */, + { 6, 9097, 4687, 4, 4, UNI_BPT__O } /* bpt=open */, + { 3, 184, 988, 2, 5, UNI_MUSIC } /* ismusic */, + { 1, 9365, 9405, 4, 4, UNI_TALU } /* scx=talu */, + { 2, 8886, 5967, 3, 4, UNI_HEBR } /* sc=hebr */, + { 9, 8685, 26, 4, 1, UNI_XPOSIXXDIGIT } /* hex=y */, + { 8, 1362, 5138, 24, 2, UNI_CCC__7 } /* canonicalcombiningclass=nk */, + { 4, 9901, 3248, 8, 5, UNI_XPOSIXSPACE } /* isxposixspace */, + { 3, 8424, 2065, 7, 20, UNI_CJKRADICALSSUP } /* block=cjkradicalssupplement */, + { 0, 7128, 8156, 10, 7, UNI_WB__NL } /* wordbreak=newline */, + { 2, 7374, 0, 9, 0, UNI_SAMR } /* samaritan */, + { 5, 8424, 78, 6, 10, UNI_ARABICMATH } /* block=arabicmath */, + { 21, 9093, 3620, 4, 10, UNI_INMANICHAEAN } /* blk=manichaean */, + { 0, 9049, 9719, 4, 3, UNI_AGE__8 } /* age=v80 */, + { 0, 8886, 9105, 3, 4, UNI_SC__CAKM } /* sc=cakm */, + { 1, 1735, 1, 22, 1, -UNI_CWCM } /* changeswhencasemapped=n */, + { 3, 9093, 8254, 4, 7, UNI_INSIDDHAM } /* blk=siddham */, + { 9, 9093, 382, 4, 32, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* blk=egyptianhieroglyphformatcontrols */, + { 0, 1924, 9768, 10, 1, UNI_CASEDLETTER } /* category=l& */, + { 5, 8233, 9053, 7, 4, UNI_AGHB } /* script=aghb */, + { 4, 1239, 1, 25, 1, -UNI_COMPEX } /* fullcompositionexclusion=n */, + { 14, 184, 9289, 2, 4, UNI_NSHU } /* isnshu */, + { 0, 6231, 11, 12, 2, UNI_NT__DI } /* numerictype=di */, + { 1, 1482, 3344, 24, 18, UNI_INPC__TOPANDLEFTANDRIGHT } /* indicpositionalcategory=topandleftandright */, + { 36, 184, 8002, 2, 7, UNI_BENG } /* isbengali */, + { 1, 9629, 836, 3, 2, UNI_LB__SP } /* lb=sp */, + { 0, 4849, 0, 13, 0, UNI_CI } /* caseignorable */, + { 2, 4989, 0, 6, 0, UNI_KANGXI } /* kangxi */, + { 8, 6828, 9632, 10, 3, UNI_BC__LRE } /* bidiclass=lre */, + { 1, 9909, 8599, 3, 4, UNI__PERL_PATWS } /* ispatws */, + { 4, 6194, 7330, 3, 8, UNI_INOLDITALIC } /* inolditalic */, + { 0, 8879, 2473, 5, 12, UNI_INPC__TOPANDBOTTOM } /* inpc=topandbottom */, + { 8, 3671, 9289, 17, 4, UNI_NSHU } /* scriptextensions=nshu */, + { 0, 3948, 67, 3, 4, UNI_VSSUP } /* invssup */, + { 2, 3671, 4205, 18, 5, UNI_SYRC } /* scriptextensions=syriac */, + { 0, 3248, 9782, 5, 4, UNI_XPOSIXSPACE } /* spaceperl */, + { 1, 9620, 5258, 3, 11, UNI_MC } /* gc=spacingmark */, + { 0, 8955, 36, 4, 1, UNI_IDC } /* idc=t */, + { 1, 3671, 9257, 17, 4, UNI_MLYM } /* scriptextensions=mlym */, + { 1, 8635, 9734, 5, 3, UNI_IDEO } /* ideo=yes */, + { 7, 7, 0, 1, 0, UNI_C } /* c */, + { 20, 2192, 0, 2, 0, UNI_PD } /* pd */, + { 1, 9731, 9773, 3, 2, UNI_WB__XX } /* wb=xx */, + { 1, 6828, 23, 10, 2, UNI_BC__AL } /* bidiclass=al */, + { 0, 8955, 26, 4, 1, UNI_IDC } /* idc=y */, + { 2, 9093, 5526, 4, 8, UNI_GREEKEXT } /* blk=greekext */, + { 0, 1757, 36, 22, 1, UNI_CWL } /* changeswhenlowercased=t */, + { 12, 8886, 7788, 3, 8, UNI_BALI } /* sc=balinese */, + { 6, 9049, 9563, 4, 3, UNI_AGE__5_DOT_1 } /* age=5.1 */, + { 2, 9285, 0, 4, 0, UNI_NKO } /* nkoo */, + { 0, 9093, 865, 4, 28, UNI_SUPPUAA } /* blk=supplementaryprivateuseareaa */, + { 1, 184, 8550, 2, 4, UNI_LEPC } /* islepc */, + { 0, 9605, 5678, 3, 4, UNI_DT__NONE } /* dt=none */, + { 0, 2708, 3758, 4, 7, UNI_ARABICSUP } /* inarabicsup */, + { 1, 184, 7203, 2, 9, UNI_BHKS } /* isbhaiksuki */, + { 0, 5760, 7462, 13, 2, UNI_NV__43 } /* numericvalue=43 */, + { 0, 8424, 7964, 6, 8, UNI_INTIFINAGH } /* block=tifinagh */, + { 0, 184, 9085, 2, 4, UNI_BATK } /* isbatk */, + { 9, 1243, 9734, 21, 3, UNI_CE } /* compositionexclusion=yes */, + { 5, 3868, 339, 16, 2, UNI_LO } /* generalcategory=lo */, + { 1, 9620, 5809, 3, 2, UNI_PF } /* gc=pf */, + { 0, 9137, 3, 4, 1, -UNI_DEP } /* dep=f */, + { 0, 184, 3772, 2, 4, UNI_BOPO } /* isbopo */, + { 1, 7329, 0, 9, 0, UNI_ITAL } /* olditalic */, + { 40, 4241, 3022, 4, 8, UNI_INDEVANAGARI } /* indevanagari */, + { 1, 9629, 9763, 3, 2, UNI_GCB__V } /* lb=jv */, + { 0, 9093, 6809, 5, 9, UNI_ASCII } /* blk=basiclatin */, + { 1, 3756, 0, 16, 0, UNI_ARABICSUP } /* arabicsupplement */, + { 0, 9365, 5967, 4, 4, UNI_HEBR } /* scx=hebr */, + { 9, 9093, 6279, 4, 12, UNI_PLAYINGCARDS } /* blk=playingcards */, + { 1, 8233, 6554, 8, 3, UNI_SAMR } /* script=samr */, + { 1, 5339, 6318, 15, 8, UNI_SB__SC } /* sentencebreak=scontinue */, + { 0, 8233, 8002, 7, 4, UNI_SC__BENG } /* script=beng */, + { 4, 8332, 2254, 3, 19, UNI_HLUW } /* isanatolianhieroglyphs */, + { 0, 6885, 4478, 3, 14, UNI_INHANGUL } /* ishangulsyllables */, + { 0, 9904, 62, 5, 5, UNI_POSIXGRAPH } /* posixgraph */, + { 0, 11, 0, 3, 0, UNI_DIA } /* dia */, + { 13, 184, 339, 2, 2, UNI_LO } /* islo */, + { 5, 9093, 6267, 4, 8, UNI_PHAISTOS } /* blk=phaistos */, + { 5, 9141, 1, 4, 1, -UNI_DIA } /* dia=n */, + { 0, 2204, 9302, 3, 3, UNI_ORKH } /* isorkh */, + { 3, 217, 0, 33, 0, UNI_DIACRITICALSEXT } /* combiningdiacriticalmarksextended */, + { 7, 3868, 467, 16, 5, UNI_P } /* generalcategory=punct */, + { 0, 8886, 7, 3, 18, UNI_CANS } /* sc=canadianaboriginal */, + { 0, 7128, 5520, 10, 5, UNI_WB__EB } /* wordbreak=ebase */, + { 18, 1497, 4080, 9, 10, UNI_SM } /* category=mathsymbol */, + { 0, 9217, 0, 3, 0, UNI_LAO } /* lao */, + { 0, 5760, 9580, 13, 2, UNI_NV__37 } /* numericvalue=37 */, + { 4, 8886, 3467, 3, 17, UNI_AGHB } /* sc=caucasianalbanian */, + { 3, 184, 17, 3, 1, UNI_CO } /* isco */, + { 3, 4849, 1, 14, 1, -UNI_CI } /* caseignorable=n */, + { 2, 6918, 2564, 10, 2, UNI_LB__BA } /* linebreak=ba */, + { 15, 8424, 690, 7, 29, UNI_CUNEIFORMNUMBERS } /* block=cuneiformnumbersandpunctuation */, + { 1, 8886, 4267, 3, 5, UNI_BAMU } /* sc=bamum */, + { 2, 184, 1802, 3, 20, UNI_CWU } /* ischangeswhenuppercased */, + { 6, 3671, 9069, 17, 4, UNI_ARMN } /* scriptextensions=armn */, + { 3, 8954, 26, 5, 1, UNI_XIDC } /* xidc=y */, + { 0, 2684, 7401, 19, 9, UNI_GCB__V } /* hangulsyllabletype=voweljamo */, + { 70, 9629, 8345, 3, 7, UNI_LB__ZW } /* lb=zwspace */, + { 1, 5760, 7159, 13, 8, UNI_NV__1_SLASH_2 } /* numericvalue=5.00e-01 */, + { 0, 6005, 8038, 3, 6, UNI_CJKEXTE } /* incjkexte */, + { 0, 6679, 26, 11, 1, UNI_SD } /* softdotted=y */, + { 3, 9093, 0, 4, 0, UNI_blk_values_index } /* blk= */, + { 0, 7932, 9433, 8, 4, UNI_RADICAL } /* radical=true */, + { 0, 8424, 4297, 6, 7, UNI_BRAI } /* block=braille */, + { 1, 9365, 9065, 4, 4, UNI_ARMI } /* scx=armi */, + { 0, 8233, 4492, 7, 15, UNI_ARMI } /* script=imperialaramaic */, + { 0, 8424, 9217, 6, 3, UNI_INLAO } /* block=lao */, + { 0, 2930, 0, 11, 0, UNI_CHEROKEESUP } /* cherokeesup */, + { 0, 8502, 0, 4, 0, UNI_GOTH } /* goth */, + { 1, 1362, 7571, 24, 2, UNI_CCC__33 } /* canonicalcombiningclass=33 */, + { 4, 8051, 995, 7, 2, -UNI_COMPEX } /* compex=no */, + { 4, 1362, 8479, 25, 5, UNI_WB__EB } /* canonicalcombiningclass=ccc133 */, + { 0, 9093, 976, 4, 27, UNI_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusicalnotation */, + { 0, 1536, 5908, 3, 11, UNI_ETHIOPICEXTA } /* inethiopicexta */, + { 0, 3671, 8149, 17, 7, UNI_MULT } /* scriptextensions=multani */, + { 64, 8418, 8864, 6, 5, -UNI_BIDIM } /* bidim=false */, + { 0, 1482, 2373, 24, 4, UNI_INPC__LEFT } /* indicpositionalcategory=left */, + { 0, 8191, 0, 7, 0, UNI_OLCK } /* olchiki */, + { 1, 8324, 0, 7, 0, UNI_ZZZZ } /* unknown */, + { 0, 5339, 400, 14, 6, UNI_SB__FO } /* sentencebreak=format */, + { 17, 9629, 5773, 3, 13, UNI_LB__PR } /* lb=prefixnumeric */, + { 0, 9093, 3038, 4, 18, UNI_ETHIOPICSUP } /* blk=ethiopicsupplement */, + { 0, 184, 328, 2, 21, UNI_MATHOPERATORS } /* ismathematicaloperators */, + { 0, 5760, 8970, 13, 3, UNI_NV__1_SLASH_2 } /* numericvalue=1/2 */, + { 3, 4642, 1, 15, 1, UNI_NFKDQC__N } /* nfkdquickcheck=n */, + { 2, 9365, 5967, 4, 6, UNI_HEBR } /* scx=hebrew */, + { 5, 9113, 1149, 4, 2, UNI_CCC__BL } /* ccc=bl */, + { 8, 8233, 8652, 7, 6, UNI_WCHO } /* script=wancho */, + { 10, 3868, 206, 16, 2, UNI_PI } /* generalcategory=pi */, + { 0, 9605, 9149, 3, 4, UNI_DT__FONT } /* dt=font */, + { 5, 8233, 6243, 7, 12, UNI_HUNG } /* script=oldhungarian */, + { 0, 8233, 6898, 7, 4, UNI_KHAR } /* script=khar */, + { 2, 8424, 6580, 6, 11, UNI_MYANMAREXTA } /* block=myanmarexta */, + { 19, 8424, 4432, 6, 15, UNI_DIACRITICALSSUP } /* block=diacriticalssup */, + { 10, 9365, 9333, 4, 4, UNI_COPT } /* scx=qaac */, + { 0, 9093, 3110, 4, 11, UNI_GEORGIANSUP } /* blk=georgiansup */, + { 0, 9113, 5409, 4, 2, UNI_CCC__10 } /* ccc=10 */, + { 0, 6885, 8515, 3, 5, UNI_HATR } /* ishatran */, + { 0, 184, 9233, 2, 4, UNI_LISU } /* islisu */, + { 7, 3236, 0, 18, 0, UNI_patws_values_index } /* patternwhitespace= */, + { 1, 9313, 9433, 4, 4, UNI_PCM } /* pcm=true */, + { 9, 9365, 9161, 4, 4, UNI_GONM } /* scx=gonm */, + { 2, 9121, 3, 4, 1, -UNI_CWL } /* cwl=f */, + { 0, 1057, 26, 27, 1, UNI_PCM } /* prependedconcatenationmark=y */, + { 1, 8886, 9329, 3, 4, UNI_PRTI } /* sc=prti */, + { 5, 9620, 132, 3, 2, UNI_LM } /* gc=lm */, + { 0, 184, 6382, 2, 6, UNI_DOMINO } /* isdomino */, + { 0, 9049, 9005, 4, 4, UNI_AGE__12_DOT_1 } /* age=12.1 */, + { 0, 3671, 2333, 17, 4, UNI_GLAG } /* scriptextensions=glag */, + { 1, 3671, 4297, 17, 7, UNI_BRAI } /* scriptextensions=braille */, + { 0, 9113, 8782, 4, 2, UNI_CCC__27 } /* ccc=27 */, + { 8, 9647, 8376, 3, 3, UNI_NV__500 } /* nv=500 */, + { 1, 8869, 3, 5, 1, -UNI_IDSB } /* idsb=f */, + { 0, 2142, 8178, 3, 6, UNI_NB } /* innoblock */, + { 10, 9093, 6723, 4, 11, UNI_INSYLOTINAGRI } /* blk=sylotinagri */, + { 0, 9093, 217, 4, 33, UNI_DIACRITICALSEXT } /* blk=combiningdiacriticalmarksextended */, + { 13, 4762, 0, 15, 0, UNI_VEDICEXT } /* vedicextensions */, + { 0, 7008, 0, 10, 0, UNI_PHNX } /* phoenician */, + { 1, 8233, 8262, 8, 6, UNI_SOYO } /* script=soyombo */, + { 0, 9093, 2589, 4, 19, UNI_COUNTINGROD } /* blk=countingrodnumerals */, + { 0, 1136, 0, 25, 0, UNI_DI } /* defaultignorablecodepoint */, + { 13, 8886, 8205, 3, 4, UNI_OSMA } /* sc=osma */, + { 1, 9647, 8977, 3, 4, UNI_NV__1_SLASH_20 } /* nv=1/20 */, + { 22, 2333, 0, 20, 0, UNI_GLAGOLITICSUP } /* glagoliticsupplement */, + { 1, 9593, 25, 3, 1, UNI_BC__S } /* bc=s */, + { 8, 8051, 8864, 7, 5, -UNI_COMPEX } /* compex=false */, + { 5, 1845, 0, 6, 0, UNI_ZYYY } /* common */, + { 1, 478, 0, 31, 0, UNI_MATHALPHANUM } /* mathematicalalphanumericsymbols */, + { 3, 1362, 2733, 24, 2, UNI_CCC__1 } /* canonicalcombiningclass=ov */, + { 2, 5760, 7747, 13, 2, UNI_NV__28 } /* numericvalue=28 */, + { 2, 8424, 5578, 6, 13, UNI_KANAEXTA } /* block=kanaextendeda */, + { 0, 9605, 8574, 3, 6, UNI_DT__NAR } /* dt=narrow */, + { 36, 9093, 2874, 4, 19, UNI_SUPARROWSB } /* blk=supplementalarrowsb */, + { 0, 6183, 0, 12, 0, UNI_MEND } /* mendekikakui */, + { 0, 3671, 8079, 17, 7, UNI_GRAN } /* scriptextensions=grantha */, + { 0, 8685, 36, 4, 1, UNI_XPOSIXXDIGIT } /* hex=t */, + { 0, 1141, 0, 2, 0, UNI_TITLE } /* lt */, + { 0, 8233, 7956, 7, 8, UNI_SC__TAGB } /* script=tagbanwa */, + { 2, 8886, 9225, 3, 4, UNI_SC__LINA } /* sc=lina */, + { 12, 1497, 5259, 10, 10, UNI_MC } /* category=spacingmark */, + { 0, 9623, 6099, 3, 12, UNI_JG__MALAYALAMNNA } /* jg=malayalamnna */, + { 11, 8233, 7796, 7, 4, UNI_BASS } /* script=bass */, + { 1, 9093, 7892, 4, 8, UNI_INJAVANESE } /* blk=javanese */, + { 10, 7932, 8864, 8, 5, -UNI_RADICAL } /* radical=false */, + { 2, 9602, 9734, 3, 3, UNI_DI } /* di=yes */, + { 0, 9623, 6147, 3, 12, UNI_JG__MANICHAEANPE } /* jg=manichaeanpe */, + { 0, 9113, 7539, 4, 3, UNI_CCC__B } /* ccc=220 */, + { 1, 8424, 1889, 6, 22, UNI_EARLYDYNASTICCUNEIFORM } /* block=earlydynasticcuneiform */, + { 0, 3868, 2273, 16, 20, UNI_PC } /* generalcategory=connectorpunctuation */, + { 16, 8424, 3469, 8, 15, UNI_INCAUCASIANALBANIAN } /* block=caucasianalbanian */, + { 3, 21, 8107, 2, 7, UNI_INKANNADA } /* inkannada */, + { 0, 1482, 9, 24, 2, UNI_INPC__NA } /* indicpositionalcategory=na */, + { 0, 698, 0, 6, 0, UNI_N } /* number */, + { 0, 1924, 36, 10, 1, UNI_TITLE } /* category=lt */, + { 0, 5760, 8969, 13, 4, UNI_NV___MINUS_1_SLASH_2 } /* numericvalue=-1/2 */, + { 0, 9365, 2148, 4, 21, UNI_PRTI } /* scx=inscriptionalparthian */, + { 1, 5760, 9560, 13, 3, UNI_NV__4_SLASH_5 } /* numericvalue=4/5 */, + { 83, 3671, 9241, 17, 4, UNI_MEDF } /* scriptextensions=medf */, + { 0, 7980, 0, 8, 0, UNI_UGAR } /* ugaritic */, + { 0, 5565, 6795, 13, 3, UNI_JG__QAF } /* joininggroup=qaf */, + { 0, 9731, 495, 3, 2, UNI_WB__NU } /* wb=nu */, + { 0, 9365, 9273, 4, 4, UNI_NARB } /* scx=narb */, + { 2, 2106, 5394, 21, 2, UNI_LB__H2 } /* graphemeclusterbreak=lv */, + { 4, 2948, 0, 18, 0, UNI_HALFMARKS } /* combininghalfmarks */, + { 0, 8233, 6027, 7, 5, UNI_KHMR } /* script=khmer */, + { 4, 9623, 4537, 3, 15, UNI_JG__MANICHAEANGIMEL } /* jg=manichaeangimel */, + { 0, 9623, 9671, 3, 3, UNI_JG__TAH } /* jg=tah */, + { 0, 2211, 0, 4, 0, UNI_SINH } /* sinh */, + { 0, 7230, 8864, 9, 5, -UNI_EXT } /* extender=false */, + { 8, 1497, 9779, 9, 2, UNI_ZS } /* category=zs */, + { 0, 8886, 2930, 3, 8, UNI_CHER } /* sc=cherokee */, + { 10, 9049, 9566, 4, 3, UNI_AGE__5_DOT_2 } /* age=5.2 */, + { 0, 4807, 0, 14, 0, UNI_ANCIENTSYMBOLS } /* ancientsymbols */, + { 4, 9113, 23, 4, 2, UNI_CCC__AL } /* ccc=al */, + { 0, 9605, 6195, 3, 8, UNI_DT__NONCANON } /* dt=noncanon */, + { 5, 9093, 8009, 4, 7, UNI_CJKEXTA } /* blk=cjkexta */, + { 0, 6015, 0, 12, 1, UNI_JT__U } /* joiningtype=u */, + { 0, 9901, 4829, 3, 5, UNI_XPOSIXXDIGIT } /* isxdigit */, + { 2, 7018, 9581, 10, 3, UNI_IN__7 } /* presentin=7.0 */, + { 1, 8886, 8079, 3, 7, UNI_SC__GRAN } /* sc=grantha */, + { 26, 8317, 0, 7, 0, UNI_UCASEXT } /* ucasext */, + { 10, 8886, 4717, 3, 5, UNI_SC__TAML } /* sc=tamil */, + { 10, 1536, 7223, 4, 7, UNI_EMOTICONS } /* inemoticons */, + { 0, 3671, 8859, 17, 5, UNI_DOGR } /* scriptextensions=dogra */, + { 0, 9647, 8370, 3, 6, UNI_NV__432000 } /* nv=432000 */, + { 0, 8233, 8255, 8, 3, UNI_SIDD } /* script=sidd */, + { 6, 6194, 1031, 3, 26, UNI_OCR } /* inopticalcharacterrecognition */, + { 3, 9113, 8755, 5, 4, UNI_CCC__22 } /* ccc=ccc22 */, + { 0, 9629, 5991, 3, 12, UNI_LB__IS } /* lb=infixnumeric */, + { 8, 5513, 0, 12, 0, UNI_GRBASE } /* graphemebase */, + { 7, 6928, 1, 10, 1, -UNI_XPOSIXLOWER } /* lowercase=n */, + { 6, 8233, 78, 7, 4, UNI_SC__ARAB } /* script=arab */, + { 0, 7018, 7436, 10, 3, UNI_IN__1_DOT_1 } /* presentin=1.1 */, + { 6, 184, 921, 2, 17, UNI_VS } /* isvariationselector */, + { 1, 9647, 8354, 3, 2, UNI_NV__60 } /* nv=60 */, + { 1, 9479, 4795, 5, 12, UNI_INZANABAZARSQUARE } /* inzanabazarsquare */, + { 1, 3671, 9405, 17, 4, UNI_TALU } /* scriptextensions=talu */, + { 0, 9909, 472, 3, 2, UNI_PUA } /* ispua */, + { 0, 3951, 2354, 3, 19, UNI_PHLI } /* isinscriptionalpahlavi */, + { 0, 9365, 9197, 4, 4, UNI_KALI } /* scx=kali */, + { 0, 9605, 567, 3, 2, UNI_DT__NB } /* dt=nb */, + { 3, 8310, 0, 4, 0, UNI_TIRH } /* tirh */, + { 0, 1014, 0, 6, 0, UNI_L } /* letter */, + { 16, 3251, 8864, 3, 5, -UNI_CE } /* ce=false */, + { 0, 21, 8550, 2, 6, UNI_INLEPCHA } /* inlepcha */, + { 4, 1622, 0, 23, 0, UNI_LATINEXTADDITIONAL } /* latinextendedadditional */, + { 1, 8233, 9390, 8, 3, UNI_SOGO } /* script=sogo */, + { 3, 6918, 721, 10, 2, UNI_LB__CL } /* linebreak=cl */, + { 2, 9093, 4204, 4, 16, UNI_SYRIACSUP } /* blk=syriacsupplement */, + { 0, 9093, 3326, 4, 11, UNI_TAIXUANJING } /* blk=taixuanjing */, + { 1, 9129, 995, 4, 2, -UNI_CWU } /* cwu=no */, + { 0, 9365, 9457, 4, 4, UNI_WCHO } /* scx=wcho */, + { 11, 3951, 2704, 3, 3, UNI_IDST } /* isidst */, + { 65, 9623, 9369, 3, 4, UNI_JG__SEEN } /* jg=seen */, + { 1, 2148, 350, 3, 32, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* insupplementalsymbolsandpictographs */, + { 0, 9093, 3836, 4, 16, UNI_CYPRIOTSYLLABARY } /* blk=cypriotsyllabary */, + { 40, 5565, 2551, 13, 19, UNI_JG__BURUSHASKIYEHBARREE } /* joininggroup=burushaskiyehbarree */, + { 36, 8424, 3416, 6, 10, UNI_ALCHEMICAL } /* block=alchemical */, + { 14, 8886, 9177, 3, 4, UNI_SC__HANO } /* sc=hano */, + { 1, 8959, 0, 5, 0, UNI_xids_values_index } /* xids= */, + { 8, 5565, 5718, 13, 3, UNI_JG__WAW } /* joininggroup=waw */, + { 1, 9620, 1, 3, 1, UNI_N } /* gc=n */, + { 11, 9731, 2368, 3, 2, UNI_LB__HL } /* wb=hl */, + { 0, 8424, 983, 6, 5, UNI_INGREEK } /* block=greek */, + { 1, 3020, 0, 18, 0, UNI_DEVANAGARIEXT } /* devanagariextended */, + { 10, 6918, 395, 10, 2, UNI_LB__GL } /* linebreak=gl */, + { 0, 184, 4582, 2, 15, UNI_MERC } /* ismeroiticcursive */, + { 2, 8424, 1188, 6, 8, UNI_INKATAKANA } /* block=katakana */, + { 0, 7796, 0, 4, 0, UNI_BASS } /* bass */, + { 3, 8886, 8289, 3, 7, UNI_LANA } /* sc=taitham */, + { 16, 9093, 4597, 4, 15, UNI_MISCPICTOGRAPHS } /* blk=miscpictographs */, + { 1, 4849, 9433, 14, 4, UNI_CI } /* caseignorable=true */, + { 0, 8871, 3227, 3, 3, UNI_SB__SE } /* sb=sep */, + { 6, 9365, 9057, 4, 4, UNI_AHOM } /* scx=ahom */, + { 3, 5760, 5409, 13, 5, UNI_NV__10000 } /* numericvalue=10000 */, + { 3, 6194, 8206, 3, 6, UNI_INOSMANYA } /* inosmanya */, + { 1, 1362, 7691, 24, 2, UNI_CCC__36 } /* canonicalcombiningclass=36 */, + { 0, 2353, 0, 20, 0, UNI_PHLI } /* inscriptionalpahlavi */, + { 0, 3552, 0, 11, 0, UNI_ETHIOPICEXT } /* ethiopicext */, + { 0, 3535, 0, 17, 0, UNI_CYRILLICEXTC } /* cyrillicextendedc */, + { 0, 8635, 8864, 5, 5, -UNI_IDEO } /* ideo=false */, + { 1, 509, 0, 30, 0, UNI_CJKEXTA } /* cjkunifiedideographsextensiona */, + { 0, 184, 837, 2, 28, UNI_PHONETICEXTSUP } /* isphoneticextensionssupplement */, + { 0, 3290, 0, 18, 0, UNI_RUMI } /* ruminumeralsymbols */, + { 17, 9365, 9473, 4, 4, UNI_YI } /* scx=yiii */, + { 0, 5760, 8669, 13, 3, UNI_NV__1_SLASH_3 } /* numericvalue=1/3 */, + { 0, 3868, 3820, 16, 16, UNI_PE } /* generalcategory=closepunctuation */, + { 2, 184, 7088, 2, 10, UNI_SUPARROWSC } /* issuparrowsc */, + { 14, 9193, 24, 4, 1, UNI_GCB__L } /* hst=l */, + { 17, 9093, 8562, 4, 6, UNI_INLYCIAN } /* blk=lycian */, + { 0, 3002, 9149, 18, 4, UNI_DT__FONT } /* decompositiontype=font */, + { 10, 9141, 8864, 4, 5, -UNI_DIA } /* dia=false */, + { 11, 9593, 3056, 3, 18, UNI_BC__ET } /* bc=europeanterminator */, + { 0, 7230, 1, 9, 1, -UNI_EXT } /* extender=n */, + { 2, 3671, 8065, 17, 4, UNI_ELBA } /* scriptextensions=elba */, + { 1, 9365, 8002, 4, 4, UNI_BENG } /* scx=beng */, + { 5, 184, 9130, 3, 2, UNI_CWU } /* iscwu */, + { 0, 21, 8526, 2, 6, UNI_INKAITHI } /* inkaithi */, + { 4, 9125, 1, 4, 1, -UNI_CWT } /* cwt=n */, + { 1, 3868, 7, 16, 1, UNI_C } /* generalcategory=c */, + { 8, 435, 0, 5, 0, UNI__PERL_NCHAR } /* nchar */, + { 5, 9129, 0, 3, 0, UNI_CWU } /* cwu */, + { 0, 8886, 9273, 3, 4, UNI_NARB } /* sc=narb */, + { 3, 9113, 8722, 4, 2, UNI_CCC__15 } /* ccc=15 */, + { 0, 3671, 1188, 17, 8, UNI_KANA } /* scriptextensions=katakana */, + { 0, 8233, 8296, 7, 7, UNI_TAVT } /* script=taiviet */, + { 1, 9093, 1867, 4, 22, UNI_DIACRITICALSFORSYMBOLS } /* blk=diacriticalsforsymbols */, + { 0, 8884, 2532, 5, 19, UNI_INSC__BRAHMIJOININGNUMBER } /* insc=brahmijoiningnumber */, + { 0, 9365, 6159, 4, 12, UNI_GONM } /* scx=masaramgondi */, + { 2, 9113, 0, 4, 0, UNI_ccc_values_index } /* ccc= */, + { 0, 1362, 23, 24, 2, UNI_CCC__AL } /* canonicalcombiningclass=al */, + { 0, 8086, 3, 7, 1, -UNI_GRBASE } /* grbase=f */, + { 2, 9781, 1129, 33, 5, UNI__PERL_PROBLEMATIC_LOCALE_FOLDEDS_START } /* _perl_problematic_locale_foldeds_start */, + { 0, 9141, 36, 4, 1, UNI_DIA } /* dia=t */, + { 0, 3254, 3, 18, 1, -UNI_RI } /* regionalindicator=f */, + { 5, 3002, 2204, 18, 3, UNI_DT__ISO } /* decompositiontype=iso */, + { 0, 9849, 9878, 15, 5, UNI__PERL_CHARNAME_BEGIN } /* _perl_charname_begin */, + { 11, 9113, 8455, 5, 4, UNI_CCC__12 } /* ccc=ccc12 */, + { 5, 9093, 3900, 4, 16, UNI_HALFANDFULLFORMS } /* blk=halfandfullforms */, + { 0, 9093, 7048, 4, 10, UNI_INSAURASHTRA } /* blk=saurashtra */, + { 0, 9629, 6349, 3, 11, UNI_LB__BB } /* lb=breakbefore */, + { 1, 3671, 7852, 17, 8, UNI_GURU } /* scriptextensions=gurmukhi */, + { 4, 3884, 0, 11, 0, UNI_GEORGIANEXT } /* georgianext */, + { 0, 9365, 8514, 4, 4, UNI_HATR } /* scx=hatr */, + { 68, 779, 0, 22, 0, UNI_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsup */, + { 16, 4477, 0, 15, 0, UNI_INHANGUL } /* hangulsyllables */, + { 0, 9946, 7, 3, 1, UNI_SC } /* issc */, + { 0, 9093, 3996, 4, 16, UNI_LINEARBSYLLABARY } /* blk=linearbsyllabary */, + { 0, 9647, 8358, 3, 6, UNI_NV__300000 } /* nv=300000 */, + { 29, 9189, 0, 4, 0, UNI_HMNP } /* hmnp */, + { 2, 8233, 78, 7, 6, UNI_SC__ARAB } /* script=arabic */, + { 0, 2204, 4141, 3, 4, UNI_C } /* isother */, + { 4, 9629, 83, 3, 2, UNI_LB__CM } /* lb=cm */, + { 3, 1497, 341, 9, 2, UNI_PE } /* category=pe */, + { 22, 2703, 0, 3, 0, UNI_IDS } /* ids */, + { 0, 9946, 2453, 3, 4, UNI_STERM } /* issterm */, + { 0, 8233, 9105, 7, 4, UNI_SC__CAKM } /* script=cakm */, + { 2, 976, 0, 17, 0, UNI_ANCIENTGREEKMUSIC } /* ancientgreekmusic */, + { 0, 9093, 2855, 4, 19, UNI_SUPARROWSA } /* blk=supplementalarrowsa */, + { 58, 9153, 5520, 4, 5, UNI_WB__EB } /* gcb=ebase */, + { 2, 9049, 9707, 4, 3, UNI_AGE__6_DOT_1 } /* age=v61 */, + { 0, 9599, 0, 3, 0, UNI_ci_values_index } /* ci= */, + { 0, 8884, 2570, 5, 19, UNI_INSC__CONSONANTHEADLETTER } /* insc=consonantheadletter */, + { 4, 5979, 995, 12, 2, -UNI_IDEO } /* ideographic=no */, + { 2, 8233, 3110, 7, 8, UNI_SC__GEOR } /* script=georgian */, + { 19, 921, 0, 28, 0, UNI_VSSUP } /* variationselectorssupplement */, + { 3, 184, 6898, 2, 10, UNI_KHAR } /* iskharoshthi */, + { 4, 7128, 0, 10, 0, UNI_wb_values_index } /* wordbreak= */, + { 1, 5565, 5666, 13, 3, UNI_JG__NUN } /* joininggroup=nun */, + { 34, 8233, 6691, 8, 10, UNI_SORA } /* script=sorasompeng */, + { 7, 9365, 7980, 4, 4, UNI_UGAR } /* scx=ugar */, + { 2, 184, 1576, 2, 23, UNI_GEOMETRICSHAPESEXT } /* isgeometricshapesextended */, + { 3, 8233, 3038, 7, 8, UNI_ETHI } /* script=ethiopic */, + { 1, 9049, 7487, 4, 1, UNI_AGE__6 } /* age=6 */, + { 9, 9093, 7900, 4, 8, UNI_KANAEXTA } /* blk=kanaexta */, + { 1, 8538, 0, 4, 0, UNI_KHOJ } /* khoj */, + { 9, 9153, 36, 4, 1, UNI_GCB__T } /* gcb=t */, + { 1, 184, 5721, 2, 13, UNI_MAYANNUMERALS } /* ismayannumerals */, + { 3, 8424, 2627, 6, 19, UNI_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumsup */, + { 14, 2984, 0, 6, 0, UNI_COPT } /* coptic */, + { 0, 8617, 8864, 5, 5, -UNI_TERM } /* term=false */, + { 0, 6918, 5943, 10, 4, UNI_LB__GL } /* linebreak=glue */, + { 2, 184, 7302, 2, 9, UNI_NBAT } /* isnabataean */, + { 6, 8142, 0, 7, 0, UNI_MARC } /* marchen */, + { 52, 9365, 8262, 5, 6, UNI_SOYO } /* scx=soyombo */, + { 8, 9273, 0, 4, 0, UNI_NARB } /* narb */, + { 1, 9365, 8562, 4, 4, UNI_LYCI } /* scx=lyci */, + { 1, 6567, 0, 13, 0, UNI_MISCSYMBOLS } /* inmiscsymbols */, + { 12, 9093, 7058, 4, 10, UNI_SMALLFORMS } /* blk=smallforms */, + { 7, 3868, 5487, 16, 13, UNI_XPOSIXDIGIT } /* generalcategory=decimalnumber */, + { 0, 7772, 0, 8, 0, UNI_ARMN } /* armenian */, + { 0, 3248, 995, 6, 2, -UNI_XPOSIXSPACE } /* space=no */, + { 0, 9365, 9229, 4, 4, UNI_LINB } /* scx=linb */, + { 2, 4267, 0, 15, 0, UNI_BAMUMSUP } /* bamumsupplement */, + { 0, 9093, 8044, 4, 7, UNI_CJKEXTF } /* blk=cjkextf */, + { 0, 3671, 2212, 18, 6, UNI_SINH } /* scriptextensions=sinhala */, + { 5, 3671, 8303, 17, 7, UNI_TIBT } /* scriptextensions=tibetan */, + { 0, 1645, 0, 23, 0, UNI_SHORTHANDFORMATCONTROLS } /* shorthandformatcontrols */, + { 61, 1497, 9777, 9, 2, UNI_ZP } /* category=zp */, + { 0, 8886, 9133, 3, 4, UNI_SC__CYRL } /* sc=cyrl */, + { 2, 8406, 0, 6, 0, UNI_alpha_values_index } /* alpha= */, + { 1, 5199, 0, 14, 0, UNI_SK } /* modifiersymbol */, + { 0, 9365, 9221, 4, 4, UNI_LATN } /* scx=latn */, + { 2, 9093, 8710, 5, 4, UNI_INBUHID } /* blk=buhid */, + { 3, 9049, 9006, 4, 3, UNI_AGE__2_DOT_1 } /* age=2.1 */, + { 1, 1362, 8832, 24, 2, UNI_CCC__84 } /* canonicalcombiningclass=84 */, + { 0, 8233, 8072, 7, 7, UNI_ELYM } /* script=elymaic */, + { 1, 5565, 9245, 13, 4, UNI_JG__MEEM } /* joininggroup=meem */, + { 1, 3852, 0, 16, 0, UNI_PF } /* finalpunctuation */, + { 2, 8233, 3772, 7, 4, UNI_SC__BOPO } /* script=bopo */, + { 9, 9093, 3308, 4, 12, UNI_SMALLKANAEXT } /* blk=smallkanaext */, + { 40, 8424, 3552, 6, 16, UNI_ETHIOPICEXT } /* block=ethiopicextended */, + { 0, 9365, 9469, 4, 4, UNI_XSUX } /* scx=xsux */, + { 0, 5565, 3637, 13, 17, UNI_JG__MANICHAEANHUNDRED } /* joininggroup=manichaeanhundred */, + { 1, 9365, 8622, 4, 4, UNI_TELU } /* scx=telu */, + { 0, 9946, 2212, 3, 3, UNI_SINH } /* issinh */, + { 1, 9623, 4012, 3, 16, UNI_JG__MANICHAEANDALETH } /* jg=manichaeandaleth */, + { 1, 9237, 9433, 4, 4, UNI_LOE } /* loe=true */, + { 1, 9620, 9779, 3, 2, UNI_ZS } /* gc=zs */, + { 16, 8233, 9165, 7, 4, UNI_SC__GREK } /* script=grek */, + { 0, 5565, 7948, 13, 8, UNI_JG__SWASHKAF } /* joininggroup=swashkaf */, + { 0, 8884, 3788, 5, 16, UNI_INSC__CANTILLATIONMARK } /* insc=cantillationmark */, + { 3, 184, 9209, 2, 4, UNI_KTHI } /* iskthi */, + { 1, 9365, 7338, 4, 9, UNI_PERM } /* scx=oldpermic */, + { 17, 9647, 7540, 3, 6, UNI_NV__200000 } /* nv=200000 */, + { 6, 6316, 9734, 11, 3, UNI_IDC } /* idcontinue=yes */, + { 3, 2064, 0, 21, 0, UNI_CJKRADICALSSUP } /* cjkradicalssupplement */, + { 1, 184, 2006, 2, 15, UNI_MODIFIERLETTERS } /* ismodifierletters */, + { 2, 8424, 8282, 6, 7, UNI_INTAGALOG } /* block=tagalog */, + { 3, 9365, 2984, 4, 6, UNI_COPT } /* scx=coptic */, + { 44, 8886, 9333, 3, 4, UNI_SC__COPT } /* sc=qaac */, + { 17, 3243, 8864, 11, 5, -UNI_XPOSIXSPACE } /* whitespace=false */, + { 1, 6828, 24, 10, 1, UNI_BC__L } /* bidiclass=l */, + { 2, 6888, 9734, 10, 3, UNI_DIA } /* diacritic=yes */, + { 3, 8424, 382, 6, 32, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* block=egyptianhieroglyphformatcontrols */, + { 2, 3248, 36, 6, 1, UNI_XPOSIXSPACE } /* space=t */, + { 22, 9093, 6591, 4, 11, UNI_MYANMAREXTB } /* blk=myanmarextb */, + { 1, 8424, 78, 6, 35, UNI_ARABICMATH } /* block=arabicmathematicalalphabeticsymbols */, + { 0, 9629, 5346, 3, 2, UNI_LB__EB } /* lb=eb */, + { 1, 328, 0, 21, 0, UNI_MATHOPERATORS } /* mathematicaloperators */, + { 0, 8002, 0, 7, 0, UNI_BENG } /* bengali */, + { 1, 184, 9213, 2, 4, UNI_LANA } /* islana */, + { 0, 8424, 3837, 7, 15, UNI_CYPRIOTSYLLABARY } /* block=cypriotsyllabary */, + { 1, 9093, 5422, 4, 13, UNI_AEGEANNUMBERS } /* blk=aegeannumbers */, + { 11, 9113, 3969, 4, 1, UNI_CCC__1 } /* ccc=1 */, + { 0, 7128, 4195, 10, 9, UNI_WB__EB } /* wordbreak=emodifier */, + { 1, 9153, 6525, 4, 3, UNI_LB__H3 } /* gcb=lvt */, + { 0, 3868, 1156, 16, 2, UNI_PO } /* generalcategory=po */, + { 1, 21, 6492, 2, 11, UNI_KATAKANAEXT } /* inkatakanaext */, + { 0, 9049, 9710, 4, 3, UNI_AGE__6_DOT_2 } /* age=v62 */, + { 0, 184, 1003, 2, 11, UNI_ENCLOSEDCJK } /* isenclosedcjk */, + { 19, 9365, 1482, 5, 3, UNI_SIND } /* scx=sind */, + { 0, 8884, 1214, 5, 25, UNI_INSC__CONSONANTINITIALPOSTFIXED } /* insc=consonantinitialpostfixed */, + { 1, 9365, 2930, 4, 8, UNI_CHER } /* scx=cherokee */, + { 0, 5565, 5185, 13, 14, UNI_JG__MANICHAEANYODH } /* joininggroup=manichaeanyodh */, + { 2, 184, 3218, 2, 18, UNI_ZP } /* isparagraphseparator */, + { 3, 8886, 5242, 5, 2, UNI_SC__KHOJ } /* sc=khoj */, + { 0, 3243, 9734, 11, 3, UNI_XPOSIXSPACE } /* whitespace=yes */, + { 27, 9093, 7088, 4, 10, UNI_SUPARROWSC } /* blk=suparrowsc */, + { 13, 9093, 689, 4, 16, UNI_CUNEIFORMNUMBERS } /* blk=cuneiformnumbers */, + { 3, 8424, 5955, 6, 12, UNI_INGUNJALAGONDI } /* block=gunjalagondi */, + { 0, 2064, 0, 14, 0, UNI_CJKRADICALSSUP } /* cjkradicalssup */, + { 0, 1618, 0, 4, 0, UNI_JAMO } /* jamo */, + { 4, 7876, 0, 8, 0, UNI_JAMOEXTA } /* jamoexta */, + { 0, 414, 0, 32, 0, UNI_INIDC } /* ideographicdescriptioncharacters */, + { 0, 9093, 6991, 4, 7, UNI_INSOGDIAN } /* blk=sogdian */, + { 6, 8424, 2874, 6, 19, UNI_SUPARROWSB } /* block=supplementalarrowsb */, + { 3, 8233, 6602, 7, 4, UNI_SC__NAND } /* script=nand */, + { 3, 6816, 8004, 4, 5, UNI_INBENGALI } /* inbengali */, + { 8, 2453, 0, 20, 0, UNI_term_values_index } /* terminalpunctuation= */, + { 3, 539, 0, 30, 0, UNI_CJKEXTB } /* cjkunifiedideographsextensionb */, + { 1, 3671, 6988, 17, 10, UNI_SOGO } /* scriptextensions=oldsogdian */, + { 17, 4297, 0, 15, 0, UNI_BRAI } /* braillepatterns */, + { 1, 7956, 0, 8, 0, UNI_TAGB } /* tagbanwa */, + { 13, 6918, 0, 10, 0, UNI_lb_values_index } /* linebreak= */, + { 0, 1779, 3, 22, 1, -UNI_CWT } /* changeswhentitlecased=f */, + { 4, 3671, 8514, 17, 4, UNI_HATR } /* scriptextensions=hatr */, + { 1, 184, 9169, 2, 4, UNI_GUJR } /* isgujr */, + { 11, 9153, 4140, 4, 5, UNI_GCB__XX } /* gcb=other */, + { 2, 7025, 9677, 3, 3, UNI_IN__2_DOT_1 } /* in=v21 */, + { 4, 9141, 26, 4, 1, UNI_DIA } /* dia=y */, + { 1, 6828, 426, 10, 2, UNI_BC__ES } /* bidiclass=es */, + { 2, 4402, 0, 4, 0, UNI_DASH } /* dash */, + { 0, 184, 4297, 2, 4, UNI_BRAI } /* isbrai */, + { 3, 3671, 2984, 17, 6, UNI_COPT } /* scriptextensions=coptic */, + { 1, 9647, 7708, 3, 8, UNI_NV__15_SLASH_2 } /* nv=7.50e+00 */, + { 2, 9113, 7659, 4, 2, UNI_CCC__16 } /* ccc=16 */, + { 1, 5565, 5643, 13, 13, UNI_JG__MANICHAEANMEM } /* joininggroup=manichaeanmem */, + { 18, 5760, 7572, 13, 8, UNI_NV__1_SLASH_3 } /* numericvalue=3.33e-01 */, + { 0, 8899, 3, 5, 1, -UNI_MATH } /* math=f */, + { 0, 8844, 0, 5, 0, UNI_cwcf_values_index } /* cwcf= */, + { 33, 8418, 9433, 6, 4, UNI_BIDIM } /* bidim=true */, + { 4, 184, 2590, 3, 18, UNI_COUNTINGROD } /* iscountingrodnumerals */, + { 9, 9093, 4108, 4, 7, UNI_INMYANMAR } /* blk=myanmar */, + { 5, 9365, 9157, 4, 4, UNI_GONG } /* scx=gong */, + { 1, 9193, 6503, 4, 11, UNI_GCB__L } /* hst=leadingjamo */, + { 18, 184, 1003, 2, 27, UNI_ENCLOSEDCJK } /* isenclosedcjklettersandmonths */, + { 0, 8886, 2532, 3, 6, UNI_BRAH } /* sc=brahmi */, + { 128, 9605, 2493, 3, 8, UNI_DT__VERT } /* dt=vertical */, + { 0, 8424, 1599, 6, 23, UNI_COMPATJAMO } /* block=hangulcompatibilityjamo */, + { 16, 9113, 8720, 5, 4, UNI_CCC__15 } /* ccc=ccc15 */, + { 3, 8424, 9285, 6, 3, UNI_INNKO } /* block=nko */, + { 0, 7048, 0, 10, 0, UNI_SAUR } /* saurashtra */, + { 0, 8233, 7995, 7, 7, UNI_AVST } /* script=avestan */, + { 1, 184, 8497, 3, 4, UNI_CWKCF } /* iscwkcf */, + { 0, 9093, 3164, 4, 18, UNI_LATINEXTADDITIONAL } /* blk=latinextadditional */, + { 0, 2142, 6604, 4, 9, UNI_INNANDINAGARI } /* innandinagari */, + { 6, 9093, 446, 4, 32, UNI_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbolsandpunctuation */, + { 4, 3671, 7203, 17, 9, UNI_BHKS } /* scriptextensions=bhaiksuki */, + { 3, 9093, 6798, 4, 10, UNI_ARABICEXTA } /* blk=arabicexta */, + { 8, 4642, 9734, 15, 3, UNI_DT__NONE } /* nfkdquickcheck=yes */, + { 2, 6231, 495, 12, 2, UNI_NT__NU } /* numerictype=nu */, + { 2, 184, 5258, 2, 11, UNI_MC } /* isspacingmark */, + { 0, 9093, 42, 4, 9, UNI_CJKCOMPAT } /* blk=cjkcompat */, + { 1, 184, 4388, 3, 13, UNI_SC } /* iscurrencysymbol */, + { 0, 6472, 3452, 4, 15, UNI_UCAS } /* incanadiansyllabics */, + { 17, 1497, 5809, 9, 2, UNI_PF } /* category=pf */, + { 4, 9365, 7788, 4, 4, UNI_BALI } /* scx=bali */, + { 1, 9385, 0, 4, 0, UNI_SHRD } /* shrd */, + { 0, 5760, 7539, 13, 2, UNI_NV__22 } /* numericvalue=22 */, + { 0, 9605, 3370, 3, 3, UNI_DT__MED } /* dt=med */, + { 0, 9049, 7159, 4, 1, UNI_AGE__5 } /* age=5 */, + { 8, 184, 2333, 2, 20, UNI_GLAGOLITICSUP } /* isglagoliticsupplement */, + { 0, 2148, 750, 3, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* insymbolsandpictographsextendeda */, + { 0, 184, 2333, 2, 10, UNI_GLAG } /* isglagolitic */, + { 1, 8684, 8864, 5, 5, -UNI_POSIXXDIGIT } /* ahex=false */, + { 1, 8634, 1, 6, 1, -UNI_UIDEO } /* uideo=n */, + { 0, 184, 133, 2, 4, UNI_M } /* ismark */, + { 0, 1622, 0, 14, 0, UNI_LATINEXTA } /* latinextendeda */, + { 5, 3671, 8262, 18, 6, UNI_SOYO } /* scriptextensions=soyombo */, + { 3, 7018, 5409, 10, 2, UNI_IN__10 } /* presentin=10 */, + { 16, 9093, 8177, 4, 7, UNI_NB } /* blk=noblock */, + { 0, 3739, 8864, 17, 5, -UNI_UIDEO } /* unifiedideograph=false */, + { 135, 3236, 0, 17, 0, UNI__PERL_PATWS } /* patternwhitespace */, + { 2, 3671, 4946, 17, 4, UNI_CHAM } /* scriptextensions=cham */, + { 1, 9731, 4195, 3, 9, UNI_WB__EB } /* wb=emodifier */, + { 1, 8233, 8568, 7, 6, UNI_LYDI } /* script=lydian */, + { 0, 4580, 2007, 3, 14, UNI_MODIFIERLETTERS } /* inmodifierletters */, + { 3, 8233, 8934, 7, 5, UNI_RUNR } /* script=runic */, + { 0, 8261, 0, 4, 0, UNI_SOYO } /* soyo */, + { 2, 148, 0, 35, 0, UNI_DIACRITICALSSUP } /* combiningdiacriticalmarkssupplement */, + { 0, 9629, 25, 3, 2, UNI_LB__SY } /* lb=sy */, + { 0, 9365, 7916, 4, 8, UNI_MAHJ } /* scx=mahajani */, + { 0, 8233, 8324, 7, 7, UNI_ZZZZ } /* script=unknown */, + { 23, 1084, 9734, 26, 3, UNI_CWKCF } /* changeswhennfkccasefolded=yes */, + { 4, 8871, 138, 3, 2, UNI_SB__FO } /* sb=fo */, + { 18, 2148, 5368, 3, 13, UNI_SUPPUNCTUATION } /* insuppunctuation */, + { 0, 9121, 9734, 4, 3, UNI_CWL } /* cwl=yes */, + { 2, 184, 6723, 2, 11, UNI_SYLO } /* issylotinagri */, + { 19, 8879, 7366, 3, 8, UNI_INPAUCINHAU } /* inpaucinhau */, + { 9, 9229, 0, 4, 0, UNI_LINB } /* linb */, + { 1, 7025, 8997, 3, 4, UNI_IN__11 } /* in=11.0 */, + { 0, 6918, 3804, 10, 16, UNI_LB__CP } /* linebreak=closeparenthesis */, + { 6, 3951, 3129, 3, 16, UNI_IDSB } /* isidsbinaryoperator */, + { 2, 9049, 9692, 4, 3, UNI_AGE__4_DOT_1 } /* age=v41 */, + { 3, 9620, 47, 3, 1, UNI_M } /* gc=m */, + { 0, 9383, 8249, 4, 5, UNI_SHAW } /* inshavian */, + { 1, 184, 8562, 2, 4, UNI_LYCI } /* islyci */, + { 0, 8871, 125, 3, 2, UNI_LB__CR } /* sb=cr */, + { 1, 8886, 8892, 3, 4, UNI_PHLI } /* sc=phli */, + { 0, 8871, 69, 3, 2, UNI_SB__UP } /* sb=up */, + { 5, 8338, 9734, 7, 3, UNI_XPOSIXSPACE } /* wspace=yes */, + { 3, 3671, 8944, 17, 5, UNI_TAKR } /* scriptextensions=takri */, + { 0, 689, 0, 30, 0, UNI_CUNEIFORMNUMBERS } /* cuneiformnumbersandpunctuation */, + { 0, 6015, 6745, 12, 11, UNI_JT__T } /* joiningtype=transparent */, + { 1, 8424, 4961, 6, 14, UNI_HIGHSURROGATES } /* block=highsurrogates */, + { 0, 9605, 4801, 3, 6, UNI_DT__SQR } /* dt=square */, + { 8, 3020, 0, 13, 0, UNI_DEVANAGARIEXT } /* devanagariext */, + { 2, 8086, 9433, 7, 4, UNI_GRBASE } /* grbase=true */, + { 11, 1158, 8283, 3, 6, UNI_INTAGALOG } /* intagalog */, + { 0, 3868, 38, 16, 2, UNI_XPOSIXDIGIT } /* generalcategory=nd */, + { 2, 8424, 5884, 7, 11, UNI_CYRILLICEXTB } /* block=cyrillicextb */, + { 130, 8886, 1573, 3, 4, UNI_SC__PHAG } /* sc=phag */, + { 3, 9647, 9737, 3, 2, UNI_NV__38 } /* nv=38 */, + { 2, 1536, 8066, 3, 6, UNI_INELBASAN } /* inelbasan */, + { 3, 8886, 9325, 3, 4, UNI_MIAO } /* sc=plrd */, + { 4, 2204, 2799, 3, 18, UNI_OTTOMANSIYAQNUMBERS } /* isottomansiyaqnumbers */, + { 0, 9113, 8371, 4, 2, UNI_CCC__32 } /* ccc=32 */, + { 2, 1977, 9734, 22, 3, UNI__PERL_NCHAR } /* noncharactercodepoint=yes */, + { 2, 2204, 8193, 4, 5, UNI_OLCK } /* isolchiki */, + { 0, 689, 0, 9, 0, UNI_XSUX } /* cuneiform */, + { 6, 5565, 5381, 13, 14, UNI_JG__HAMZAONHEHGOAL } /* joininggroup=tehmarbutagoal */, + { 4, 8424, 2169, 6, 11, UNI_INMEETEIMAYEK } /* block=meeteimayek */, + { 3, 4580, 8150, 3, 6, UNI_INMULTANI } /* inmultani */, + { 0, 9093, 2148, 4, 21, UNI_ININSCRIPTIONALPARTHIAN } /* blk=inscriptionalparthian */, + { 0, 7018, 9575, 10, 3, UNI_IN__6_DOT_1 } /* presentin=6.1 */, + { 2, 3251, 9433, 3, 4, UNI_CE } /* ce=true */, + { 9, 9093, 42, 4, 3, UNI_CJK } /* blk=cjk */, + { 0, 9602, 995, 3, 2, -UNI_DI } /* di=no */, + { 0, 5339, 69, 14, 2, UNI_SB__UP } /* sentencebreak=up */, + { 2, 9365, 7892, 4, 4, UNI_JAVA } /* scx=java */, + { 0, 9093, 2169, 4, 11, UNI_INMEETEIMAYEK } /* blk=meeteimayek */, + { 0, 9265, 0, 4, 0, UNI_MTEI } /* mtei */, + { 0, 8886, 8914, 3, 5, UNI_NSHU } /* sc=nushu */, + { 23, 9731, 7988, 3, 7, UNI_WB__LE } /* wb=aletter */, + { 0, 9365, 7365, 4, 4, UNI_PAUC } /* scx=pauc */, + { 0, 8424, 183, 6, 34, UNI_MISCPICTOGRAPHS } /* block=miscellaneoussymbolsandpictographs */, + { 0, 6828, 9644, 10, 3, UNI_BC__NSM } /* bidiclass=nsm */, + { 4, 3739, 1, 17, 1, -UNI_UIDEO } /* unifiedideograph=n */, + { 0, 9373, 0, 4, 0, UNI_SGNW } /* sgnw */, + { 1, 184, 3964, 2, 6, UNI_LATIN1 } /* islatin1 */, + { 74, 250, 0, 33, 0, UNI_MISCMATHSYMBOLSA } /* miscellaneousmathematicalsymbolsa */, + { 1, 8233, 7118, 7, 4, UNI_WARA } /* script=wara */, + { 1, 406, 0, 7, 0, UNI_XPOSIXCNTRL } /* control */, + { 10, 9629, 5952, 3, 2, UNI_LB__ZW } /* lb=zw */, + { 0, 4361, 3112, 4, 9, UNI_GEORGIANSUP } /* ingeorgiansup */, + { 0, 8871, 721, 3, 5, UNI_SB__CL } /* sb=close */, + { 3, 1084, 8864, 26, 5, -UNI_CWKCF } /* changeswhennfkccasefolded=false */, + { 1, 1362, 8461, 25, 5, UNI_CCC__129 } /* canonicalcombiningclass=ccc129 */, + { 1, 9623, 5115, 3, 14, UNI_JG__MANICHAEANHETH } /* jg=manichaeanheth */, + { 1, 9647, 8400, 3, 5, UNI_NV__90000 } /* nv=90000 */, + { 5, 78, 0, 10, 0, UNI_ARABICMATH } /* arabicmath */, + { 5, 7932, 1, 8, 1, -UNI_RADICAL } /* radical=n */, + { 1, 8424, 8532, 6, 6, UNI_KANBUN } /* block=kanbun */, + { 0, 8424, 9453, 6, 3, UNI_INVAI } /* block=vai */, + { 17, 8233, 9265, 7, 4, UNI_MTEI } /* script=mtei */, + { 5, 8310, 0, 7, 0, UNI_TIRH } /* tirhuta */, + { 0, 8508, 9433, 6, 4, UNI_GREXT } /* grext=true */, + { 2, 8424, 7876, 6, 8, UNI_JAMOEXTA } /* block=jamoexta */, + { 0, 8954, 8864, 5, 5, -UNI_XIDC } /* xidc=false */, + { 0, 8424, 8114, 6, 7, UNI_KALI } /* block=kayahli */, + { 4, 5367, 0, 14, 0, UNI_SUPPUNCTUATION } /* suppunctuation */, + { 30, 9093, 250, 4, 33, UNI_MISCMATHSYMBOLSA } /* blk=miscellaneousmathematicalsymbolsa */, + { 0, 5760, 9029, 13, 4, UNI_NV__3_SLASH_64 } /* numericvalue=3/64 */, + { 18, 6885, 5968, 3, 5, UNI_HEBR } /* ishebrew */, + { 4, 3671, 3729, 18, 10, UNI_SGNW } /* scriptextensions=signwriting */, + { 12, 1497, 598, 9, 2, UNI_XPOSIXCNTRL } /* category=cc */, + { 0, 9093, 4204, 4, 9, UNI_SYRIACSUP } /* blk=syriacsup */, + { 16, 8886, 8065, 3, 4, UNI_ELBA } /* sc=elba */, + { 0, 9629, 1472, 3, 9, UNI_LB__SG } /* lb=surrogate */, + { 3, 3398, 8864, 18, 5, -UNI_VS } /* variationselector=false */, + { 0, 7118, 0, 10, 0, UNI_WARA } /* warangciti */, + { 2, 1029, 0, 2, 0, UNI_SO } /* so */, + { 4, 2148, 6724, 3, 10, UNI_INSYLOTINAGRI } /* insylotinagri */, + { 0, 8879, 472, 3, 2, UNI_PUA } /* inpua */, + { 1, 5760, 7612, 13, 8, UNI_NV__5_SLASH_12 } /* numericvalue=4.17e-01 */, + { 23, 5760, 9497, 13, 3, UNI_NV__1_SLASH_5 } /* numericvalue=1/5 */, + { 1, 3868, 112, 16, 2, UNI_SC } /* generalcategory=sc */, + { 0, 8886, 7329, 3, 9, UNI_ITAL } /* sc=olditalic */, + { 50, 8886, 9465, 3, 4, UNI_XPEO } /* sc=xpeo */, + { 0, 5565, 5936, 13, 7, UNI_JG__SEMKATH } /* joininggroup=semkath */, + { 12, 8886, 4220, 3, 4, UNI_TANG } /* sc=tang */, + { 0, 3671, 9165, 17, 4, UNI_GREK } /* scriptextensions=grek */, + { 1, 9049, 9674, 4, 3, UNI_AGE__2 } /* age=v20 */, + { 9, 3671, 8310, 17, 7, UNI_TIRH } /* scriptextensions=tirhuta */, + { 34, 9193, 6525, 4, 11, UNI_LB__H3 } /* hst=lvtsyllable */, + { 0, 5760, 7502, 13, 1, UNI_NV__8 } /* numericvalue=8 */, + { 8, 6768, 2, 3, 1, UNI_YI } /* isyi */, + { 1, 9093, 2211, 4, 21, UNI_SINHALAARCHAICNUMBERS } /* blk=sinhalaarchaicnumbers */, + { 0, 8424, 1576, 6, 18, UNI_GEOMETRICSHAPESEXT } /* block=geometricshapesext */, + { 4, 5760, 7468, 13, 8, UNI_NV__3_SLASH_2 } /* numericvalue=1.50e+00 */, + { 10, 8100, 9734, 7, 3, UNI_HYPHEN } /* hyphen=yes */, + { 0, 21, 8934, 2, 5, UNI_INRUNIC } /* inrunic */, + { 0, 3671, 8135, 17, 7, UNI_MAND } /* scriptextensions=mandaic */, + { 9, 8874, 1, 5, 1, -UNI_IDST } /* idst=n */, + { 2, 8955, 9433, 4, 4, UNI_IDC } /* idc=true */, + { 4, 1933, 3, 22, 1, -UNI_LOE } /* logicalorderexception=f */, + { 1, 9728, 8864, 3, 5, -UNI_VS } /* vs=false */, + { 1, 1497, 1474, 11, 7, UNI__PERL_SURROGATE } /* category=surrogate */, + { 1, 184, 698, 2, 6, UNI_N } /* isnumber */, + { 1, 1599, 0, 6, 0, UNI_HANG } /* hangul */, + { 0, 5565, 4954, 13, 7, UNI_JG__HEHGOAL } /* joininggroup=hehgoal */, + { 0, 9620, 1141, 3, 2, UNI_TITLE } /* gc=lt */, + { 0, 6231, 4829, 12, 5, UNI_NT__DI } /* numerictype=digit */, + { 35, 8684, 36, 5, 1, UNI_POSIXXDIGIT } /* ahex=t */, + { 0, 6315, 9734, 12, 3, UNI_XIDC } /* xidcontinue=yes */, + { 0, 3671, 9161, 17, 4, UNI_GONM } /* scriptextensions=gonm */, + { 3, 184, 2741, 2, 4, UNI_MERO } /* ismero */, + { 0, 5760, 7540, 13, 4, UNI_NV__2000 } /* numericvalue=2000 */, + { 57, 9593, 2013, 3, 3, UNI_BC__RLE } /* bc=rle */, + { 32, 9365, 7375, 5, 8, UNI_SAMR } /* scx=samaritan */, + { 19, 9620, 48, 3, 1, UNI_P } /* gc=p */, + { 5, 8233, 2984, 7, 6, UNI_SC__COPT } /* script=coptic */, + { 0, 1482, 6998, 24, 10, UNI_INPC__OVERSTRUCK } /* indicpositionalcategory=overstruck */, + { 0, 8424, 4252, 6, 15, UNI_ARABICEXTA } /* block=arabicextendeda */, + { 4, 8424, 7088, 6, 10, UNI_SUPARROWSC } /* block=suparrowsc */, + { 20, 7025, 9578, 3, 3, UNI_IN__6_DOT_3 } /* in=6.3 */, + { 8, 9313, 8864, 4, 5, -UNI_PCM } /* pcm=false */, + { 3, 8617, 0, 6, 0, UNI_TERM } /* term=t */, + { 12, 9731, 4801, 3, 2, UNI_WB__SQ } /* wb=sq */, + { 0, 9623, 3637, 3, 17, UNI_JG__MANICHAEANHUNDRED } /* jg=manichaeanhundred */, + { 4, 9365, 8628, 4, 4, UNI_THAA } /* scx=thaa */, + { 0, 2703, 3, 19, 1, -UNI_IDST } /* idstrinaryoperator=f */, + { 0, 5760, 8782, 13, 2, UNI_NV__27 } /* numericvalue=27 */, + { 0, 5435, 0, 12, 0, UNI_BIDIM } /* bidimirrored */, + { 49, 8886, 7860, 3, 8, UNI_SC__HIRA } /* sc=hiragana */, + { 0, 8424, 2021, 6, 15, UNI_TRANSPORTANDMAP } /* block=transportandmap */, + { 0, 4447, 9, 15, 2, UNI_EA__NA } /* eastasianwidth=na */, + { 0, 6005, 1824, 3, 18, UNI_CJKCOMPATIDEOGRAPHS } /* incjkcompatideographs */, + { 1, 38, 0, 2, 0, UNI_XPOSIXDIGIT } /* nd */, + { 0, 8332, 950, 3, 26, UNI_ALPHABETICPF } /* isalphabeticpresentationforms */, + { 4, 8424, 8072, 6, 7, UNI_INELYMAIC } /* block=elymaic */, + { 0, 5760, 9554, 13, 3, UNI_NV__3_SLASH_4 } /* numericvalue=3/4 */, + { 0, 9909, 9922, 3, 4, UNI_XPOSIXPRINT } /* isprint */, + { 1, 5565, 3, 15, 1, UNI_JG__KAF } /* joininggroup=kaf */, + { 1, 9623, 5139, 3, 4, UNI_JG__KAPH } /* jg=kaph */, + { 0, 6918, 5297, 10, 14, UNI_LB__PO } /* linebreak=postfixnumeric */, + { 8, 9365, 4108, 4, 7, UNI_MYMR } /* scx=myanmar */, + { 0, 3671, 7916, 17, 8, UNI_MAHJ } /* scriptextensions=mahajani */, + { 4, 8233, 3110, 7, 4, UNI_SC__GEOR } /* script=geor */, + { 2, 2836, 0, 12, 0, UNI_SUNDANESESUP } /* sundanesesup */, + { 2, 9237, 36, 4, 1, UNI_LOE } /* loe=t */, + { 5, 9093, 837, 4, 18, UNI_PHONETICEXT } /* blk=phoneticextensions */, + { 5, 9093, 4477, 4, 15, UNI_INHANGUL } /* blk=hangulsyllables */, + { 4, 9365, 2353, 4, 20, UNI_PHLI } /* scx=inscriptionalpahlavi */, + { 0, 3671, 2127, 17, 14, UNI_ROHG } /* scriptextensions=hanifirohingya */, + { 36, 9901, 4828, 8, 6, UNI_XPOSIXXDIGIT } /* isxposixxdigit */, + { 0, 9093, 3964, 4, 9, UNI_LATIN1 } /* blk=latin1sup */, + { 0, 8886, 8709, 3, 5, UNI_SC__BUHD } /* sc=buhid */, + { 1, 8886, 8296, 3, 7, UNI_TAVT } /* sc=taiviet */, + { 0, 184, 3536, 3, 16, UNI_CYRILLICEXTC } /* iscyrillicextendedc */, + { 7, 184, 7230, 2, 8, UNI_EXT } /* isextender */, + { 0, 9647, 7540, 3, 5, UNI_NV__20000 } /* nv=20000 */, + { 2, 1362, 9765, 24, 2, UNI_CCC__8 } /* canonicalcombiningclass=kv */, + { 2, 184, 5896, 3, 11, UNI_CYRILLICEXTC } /* iscyrillicextc */, + { 8, 9365, 2984, 4, 4, UNI_COPT } /* scx=copt */, + { 12, 8424, 3452, 8, 15, UNI_UCAS } /* block=canadiansyllabics */, + { 8, 8954, 995, 5, 2, -UNI_XIDC } /* xidc=no */, + { 0, 1085, 0, 4, 0, UNI_HANG } /* hang */, + { 11, 117, 2355, 4, 18, UNI_ININSCRIPTIONALPAHLAVI } /* ininscriptionalpahlavi */, + { 18, 1243, 3, 21, 1, -UNI_CE } /* compositionexclusion=f */, + { 0, 6828, 9614, 10, 3, UNI_BC__FSI } /* bidiclass=fsi */, + { 1, 9093, 1622, 4, 9, UNI_LATINEXTE } /* blk=latinexte */, + { 17, 8424, 8149, 6, 7, UNI_INMULTANI } /* block=multani */, + { 6, 8233, 9221, 7, 4, UNI_SC__LATN } /* script=latn */, + { 0, 3671, 3836, 17, 7, UNI_CPRT } /* scriptextensions=cypriot */, + { 2, 3671, 9197, 17, 4, UNI_KALI } /* scriptextensions=kali */, + { 0, 3772, 0, 8, 0, UNI_BOPO } /* bopomofo */, + { 5, 8886, 6555, 5, 2, UNI_KHMR } /* sc=khmr */, + { 0, 9626, 0, 3, 1, UNI_JT__U } /* jt=u */, + { 1, 8884, 5474, 5, 13, UNI_INSC__CONSONANTDEAD } /* insc=consonantdead */, + { 1, 6613, 0, 11, 0, UNI_LO } /* otherletter */, + { 8, 3951, 3587, 3, 16, UNI_INDICSIYAQNUMBERS } /* isindicsiyaqnumbers */, + { 0, 6015, 24, 12, 1, UNI_JT__L } /* joiningtype=l */, + { 0, 8100, 0, 7, 0, UNI_hyphen_values_index } /* hyphen= */, + { 0, 6003, 9433, 12, 4, UNI_JOINC } /* joincontrol=true */, + { 1, 8002, 0, 4, 0, UNI_BENG } /* beng */, + { 1, 9093, 2798, 4, 19, UNI_OTTOMANSIYAQNUMBERS } /* blk=ottomansiyaqnumbers */, + { 2, 9725, 18, 3, 1, UNI_VO__R } /* vo=r */, + { 4, 9313, 0, 4, 0, UNI_pcm_values_index } /* pcm= */, + { 1, 3671, 9261, 17, 3, UNI_MRO } /* scriptextensions=mro */, + { 0, 8233, 9453, 7, 4, UNI_VAI } /* script=vaii */, + { 19, 9608, 0, 3, 0, UNI_ea_values_index } /* ea= */, + { 0, 9093, 5721, 4, 13, UNI_MAYANNUMERALS } /* blk=mayannumerals */, + { 8, 9605, 8490, 3, 6, UNI_DT__ENC } /* dt=circle */, + { 0, 719, 0, 16, 0, UNI_ENCLOSEDALPHANUM } /* enclosedalphanum */, + { 0, 9093, 8128, 4, 7, UNI_INMAKASAR } /* blk=makasar */, + { 0, 8233, 9145, 7, 4, UNI_DSRT } /* script=dsrt */, + { 0, 9629, 5967, 3, 12, UNI_LB__HL } /* lb=hebrewletter */, + { 4, 8886, 3772, 3, 4, UNI_SC__BOPO } /* sc=bopo */, + { 10, 9365, 7772, 4, 8, UNI_ARMN } /* scx=armenian */, + { 1, 7230, 9734, 9, 3, UNI_EXT } /* extender=yes */, + { 2, 3671, 8919, 17, 5, UNI_OGAM } /* scriptextensions=ogham */, + { 32, 8849, 1, 5, 1, -UNI_CWCM } /* cwcm=n */, + { 0, 6885, 6247, 3, 3, UNI_HUNG } /* ishung */, + { 0, 184, 921, 2, 18, UNI_INVS } /* isvariationselectors */, + { 1, 21, 4975, 2, 14, UNI_KANASUP } /* inkanasupplement */, + { 1, 5760, 7588, 13, 8, UNI_NV__3_SLASH_8 } /* numericvalue=3.75e-01 */, + { 1, 8233, 983, 7, 5, UNI_SC__GREK } /* script=greek */, + { 3, 5760, 7620, 13, 8, UNI_NV__9_SLASH_2 } /* numericvalue=4.50e+00 */, + { 34, 2006, 0, 14, 0, UNI_LM } /* modifierletter */, + { 0, 184, 3092, 2, 18, UNI_INPUNCTUATION } /* isgeneralpunctuation */, + { 0, 6570, 0, 4, 0, UNI__PERL_SURROGATE } /* iscs */, + { 0, 8886, 8226, 3, 7, UNI_SC__PHAG } /* sc=phagspa */, + { 0, 7128, 6415, 10, 11, UNI_WB__DQ } /* wordbreak=doublequote */, + { 0, 8233, 1188, 7, 8, UNI_SC__KANA } /* script=katakana */, + { 32, 9629, 5059, 3, 14, UNI_LB__BK } /* lb=mandatorybreak */, + { 4, 9093, 183, 4, 34, UNI_MISCPICTOGRAPHS } /* blk=miscellaneoussymbolsandpictographs */, + { 5, 9629, 34, 3, 2, UNI_LB__EX } /* lb=ex */, + { 74, 8886, 9417, 3, 4, UNI_TFNG } /* sc=tfng */, + { 2, 9909, 0, 4, 0, UNI_PO } /* ispo */, + { 0, 9781, 8599, 7, 4, UNI__PERL_PATWS } /* _perl_patws */, + { 1, 9137, 0, 4, 0, UNI_dep_values_index } /* dep= */, + { 17, 2106, 7820, 21, 8, UNI_WB__EB } /* graphemeclusterbreak=ebasegaz */, + { 0, 8886, 2353, 3, 20, UNI_PHLI } /* sc=inscriptionalpahlavi */, + { 1, 4821, 9433, 14, 4, UNI_POSIXXDIGIT } /* asciihexdigit=true */, + { 0, 8886, 382, 3, 4, UNI_EGYP } /* sc=egyp */, + { 5, 8886, 2211, 3, 4, UNI_SC__SINH } /* sc=sinh */, + { 2, 5760, 7660, 13, 8, UNI_NV__3_SLASH_5 } /* numericvalue=6.00e-01 */, + { 20, 8233, 2984, 7, 4, UNI_SC__COPT } /* script=copt */, + { 2, 1243, 0, 21, 0, UNI_ce_values_index } /* compositionexclusion= */, + { 18, 8899, 995, 5, 2, -UNI_MATH } /* math=no */, + { 10, 9903, 5492, 6, 5, UNI_XPOSIXALNUM } /* xposixalnum */, + { 5, 9626, 0, 3, 0, UNI_jt_values_index } /* jt= */, + { 2, 8520, 1, 6, 1, -UNI_JOINC } /* joinc=n */, + { 12, 8233, 2169, 7, 11, UNI_MTEI } /* script=meeteimayek */, + { 7, 9093, 2930, 4, 8, UNI_INCHEROKEE } /* blk=cherokee */, + { 1, 9629, 42, 3, 2, UNI_LB__CJ } /* lb=cj */, + { 44, 1497, 8499, 9, 2, UNI_CF } /* category=cf */, + { 1, 106, 0, 6, 0, UNI_S } /* symbol */, + { 1, 6918, 202, 10, 2, UNI_LB__SA } /* linebreak=sa */, + { 1, 8424, 5526, 6, 13, UNI_GREEKEXT } /* block=greekextended */, + { 1, 9647, 9041, 3, 4, UNI_NV__7_SLASH_12 } /* nv=7/12 */, + { 0, 9647, 7556, 3, 8, UNI_NV__1_SLASH_32 } /* nv=3.13e-02 */, + { 1, 9365, 9289, 4, 4, UNI_NSHU } /* scx=nshu */, + { 32, 9909, 7366, 3, 8, UNI_PAUC } /* ispaucinhau */, + { 1, 8424, 8894, 6, 5, UNI_INLIMBU } /* block=limbu */, + { 0, 8086, 0, 7, 0, UNI_grbase_values_index } /* grbase= */, + { 0, 8844, 0, 4, 0, UNI_CWCF } /* cwcf */, + { 5, 184, 2590, 3, 10, UNI_COUNTINGROD } /* iscountingrod */, + { 0, 8332, 977, 3, 26, UNI_ANCIENTGREEKMUSIC } /* isancientgreekmusicalnotation */, + { 36, 8233, 9089, 7, 4, UNI_BHKS } /* script=bhks */, + { 0, 9153, 1855, 4, 2, UNI_GCB__CN } /* gcb=cn */, + { 0, 9623, 0, 3, 0, UNI_jg_values_index } /* jg= */, + { 0, 3868, 341, 16, 2, UNI_PE } /* generalcategory=pe */, + { 64, 8424, 600, 7, 29, UNI_CJKEXTD } /* block=cjkunifiedideographsextensiond */, + { 3, 7419, 9433, 9, 4, UNI_XIDS } /* xidstart=true */, + { 16, 1735, 995, 22, 2, -UNI_CWCM } /* changeswhencasemapped=no */, + { 1, 9093, 5367, 4, 14, UNI_SUPPUNCTUATION } /* blk=suppunctuation */, + { 0, 9093, 42, 4, 16, UNI_CJKCOMPAT } /* blk=cjkcompatibility */, + { 2, 1362, 8837, 24, 2, UNI_CCC__91 } /* canonicalcombiningclass=91 */, + { 2, 1057, 995, 27, 2, -UNI_PCM } /* prependedconcatenationmark=no */, + { 0, 9113, 8469, 4, 3, UNI_CCC__130 } /* ccc=130 */, + { 3, 7025, 0, 3, 0, UNI_in_values_index } /* in= */, + { 0, 9093, 3092, 4, 18, UNI_INPUNCTUATION } /* blk=generalpunctuation */, + { 49, 5339, 0, 16, 0, UNI_SB__SP } /* sentencebreak=sp */, + { 0, 8424, 8002, 6, 7, UNI_INBENGALI } /* block=bengali */, + { 2, 1573, 0, 4, 0, UNI_PHAG } /* phag */, + { 0, 8149, 0, 7, 0, UNI_MULT } /* multani */, + { 2, 9647, 8400, 3, 3, UNI_NV__900 } /* nv=900 */, + { 1, 9647, 7740, 3, 8, UNI_NV__1_SLASH_12 } /* nv=8.33e-02 */, + { 0, 6712, 0, 11, 0, UNI_SUPERANDSUB } /* superandsub */, + { 11, 3868, 2006, 16, 14, UNI_LM } /* generalcategory=modifierletter */, + { 1, 6828, 2433, 10, 11, UNI_BC__R } /* bidiclass=righttoleft */, + { 0, 6918, 7909, 11, 7, UNI_LB__LF } /* linebreak=linefeed */, + { 0, 9901, 4829, 8, 5, UNI_XPOSIXDIGIT } /* isxposixdigit */, + { 0, 9137, 26, 4, 1, UNI_DEP } /* dep=y */, + { 6, 9093, 2984, 4, 18, UNI_COPTICEPACTNUMBERS } /* blk=copticepactnumbers */, + { 0, 1362, 1700, 24, 2, UNI_CCC__DB } /* canonicalcombiningclass=db */, + { 5, 9365, 7356, 4, 9, UNI_PALM } /* scx=palmyrene */, + { 11, 8886, 8002, 3, 4, UNI_SC__BENG } /* sc=beng */, + { 3, 283, 0, 33, 0, UNI_MISCMATHSYMBOLSB } /* miscellaneousmathematicalsymbolsb */, + { 4, 9269, 0, 4, 0, UNI_MYMR } /* mymr */, + { 0, 7025, 9713, 3, 3, UNI_IN__6_DOT_3 } /* in=v63 */, + { 0, 9620, 9767, 3, 2, UNI_CASEDLETTER } /* gc=l& */, + { 2, 8617, 26, 5, 1, UNI_TERM } /* term=y */, + { 1, 9093, 8226, 4, 7, UNI_INPHAGSPA } /* blk=phagspa */, + { 0, 1757, 995, 22, 2, -UNI_CWL } /* changeswhenlowercased=no */, + { 34, 9193, 881, 4, 1, UNI_GCB__V } /* hst=v */, + { 2, 8886, 8934, 3, 5, UNI_RUNR } /* sc=runic */, + { 0, 5565, 6147, 13, 12, UNI_JG__MANICHAEANPE } /* joininggroup=manichaeanpe */, + { 2, 9623, 7038, 3, 10, UNI_JG__REVERSEDPE } /* jg=reversedpe */, + { 2, 9647, 8394, 3, 2, UNI_NV__80 } /* nv=80 */, + { 0, 7230, 0, 8, 0, UNI_EXT } /* extender */, + { 0, 184, 865, 2, 28, UNI_SUPPUAA } /* issupplementaryprivateuseareaa */, + { 0, 5760, 7603, 13, 2, UNI_NV__24 } /* numericvalue=24 */, + { 71, 6005, 1412, 4, 22, UNI_DIACRITICALSFORSYMBOLS } /* incombiningmarksforsymbols */, + { 1, 184, 2779, 2, 12, UNI_MONGOLIANSUP } /* ismongoliansup */, + { 58, 2703, 0, 19, 0, UNI_idst_values_index } /* idstrinaryoperator= */, + { 72, 184, 2874, 2, 19, UNI_SUPARROWSB } /* issupplementalarrowsb */, + { 1, 8424, 3020, 6, 10, UNI_INDEVANAGARI } /* block=devanagari */, + { 3, 1362, 8770, 25, 4, UNI_CCC__25 } /* canonicalcombiningclass=ccc25 */, + { 0, 9602, 0, 3, 0, UNI_di_values_index } /* di= */, + { 0, 8424, 6267, 6, 12, UNI_PHAISTOS } /* block=phaistosdisc */, + { 0, 7128, 7293, 10, 9, UNI_WB__MB } /* wordbreak=midnumlet */, + { 1, 9731, 7820, 3, 8, UNI_WB__EB } /* wb=ebasegaz */, + { 2, 4447, 835, 15, 1, UNI_EA__W } /* eastasianwidth=w */, + { 0, 9093, 988, 4, 5, UNI_MUSIC } /* blk=music */, + { 11, 184, 9217, 2, 4, UNI_LAO } /* islaoo */, + { 0, 8899, 9734, 5, 3, UNI_MATH } /* math=yes */, + { 6, 6949, 3452, 4, 15, UNI_UCAS } /* iscanadiansyllabics */, + { 0, 8424, 6051, 6, 12, UNI_MAHJONG } /* block=mahjongtiles */, + { 0, 1497, 4140, 9, 5, UNI_C } /* category=other */, + { 2, 2484, 0, 4, 0, UNI_MAND } /* mand */, + { 0, 6918, 878, 10, 2, UNI_LB__PR } /* linebreak=pr */, + { 1, 2684, 5394, 19, 2, UNI_LB__H2 } /* hangulsyllabletype=lv */, + { 3, 9129, 3, 4, 1, -UNI_CWU } /* cwu=f */, + { 84, 8424, 690, 7, 8, UNI_INCUNEIFORM } /* block=cuneiform */, + { 2, 3868, 3146, 16, 18, UNI_PI } /* generalcategory=initialpunctuation */, + { 1, 8886, 6183, 3, 4, UNI_MEND } /* sc=mend */, + { 0, 9093, 7257, 4, 9, UNI_LATINEXTB } /* blk=latinextb */, + { 0, 9728, 9433, 3, 4, UNI_VS } /* vs=true */, + { 0, 184, 3110, 2, 4, UNI_GEOR } /* isgeor */, + { 0, 9626, 6291, 3, 12, UNI_JT__R } /* jt=rightjoining */, + { 1, 9953, 25, 3, 1, UNI_VS } /* isvs */, + { 7, 2453, 1, 20, 1, -UNI_TERM } /* terminalpunctuation=n */, + { 8, 9093, 3290, 4, 18, UNI_RUMI } /* blk=ruminumeralsymbols */, + { 2, 8233, 9337, 7, 4, UNI_SC__QAAI } /* script=qaai */, + { 3, 1239, 26, 25, 1, UNI_COMPEX } /* fullcompositionexclusion=y */, + { 9, 7118, 0, 4, 0, UNI_WARA } /* wara */, + { 0, 1536, 3039, 3, 10, UNI_ETHIOPICSUP } /* inethiopicsup */, + { 0, 9620, 1508, 3, 2, UNI_PS } /* gc=ps */, + { 0, 8332, 3758, 4, 7, UNI_ARABICSUP } /* isarabicsup */, + { 1, 3038, 0, 4, 0, UNI_ETHI } /* ethi */, + { 0, 8424, 976, 6, 17, UNI_ANCIENTGREEKMUSIC } /* block=ancientgreekmusic */, + { 7, 1362, 726, 24, 2, UNI_CCC__DA } /* canonicalcombiningclass=da */, + { 0, 3868, 400, 16, 6, UNI_CF } /* generalcategory=format */, + { 0, 9731, 6668, 3, 11, UNI_WB__SQ } /* wb=singlequote */, + { 2, 9605, 1362, 3, 9, UNI_DT__CAN } /* dt=canonical */, + { 16, 8424, 2333, 6, 13, UNI_GLAGOLITICSUP } /* block=glagoliticsup */, + { 35, 5979, 3, 12, 1, -UNI_IDEO } /* ideographic=f */, + { 4, 9365, 6691, 5, 10, UNI_SORA } /* scx=sorasompeng */, + { 2, 8424, 8045, 7, 6, UNI_CJKEXTF } /* block=cjkextf */, + { 9, 1158, 3327, 3, 10, UNI_TAIXUANJING } /* intaixuanjing */, + { 0, 8233, 9217, 7, 4, UNI_LAO } /* script=laoo */, + { 1, 9281, 0, 4, 0, UNI_NEWA } /* newa */, + { 0, 9623, 6701, 3, 11, UNI_JG__STRAIGHTWAW } /* jg=straightwaw */, + { 0, 6039, 0, 12, 0, UNI_NL } /* letternumber */, + { 5, 184, 9237, 2, 3, UNI_LOE } /* isloe */, + { 0, 9946, 1473, 3, 8, UNI__PERL_SURROGATE } /* issurrogate */, + { 0, 9365, 9185, 4, 4, UNI_HMNG } /* scx=hmng */, + { 0, 9725, 3380, 3, 18, UNI_VO__TU } /* vo=transformedupright */, + { 16, 2148, 7375, 3, 8, UNI_INSAMARITAN } /* insamaritan */, + { 8, 2401, 0, 3, 0, UNI_PUA } /* pua */, + { 1, 184, 8010, 3, 6, UNI_CJKEXTA } /* iscjkexta */, + { 82, 3671, 7804, 17, 4, UNI_BUGI } /* scriptextensions=bugi */, + { 3, 9647, 7691, 3, 2, UNI_NV__36 } /* nv=36 */, + { 3, 1362, 8740, 25, 4, UNI_CCC__19 } /* canonicalcombiningclass=ccc19 */, + { 1, 8580, 36, 6, 1, UNI__PERL_NCHAR } /* nchar=t */, + { 0, 3951, 5553, 3, 5, UNI_IPAEXT } /* isipaext */, + { 8, 9903, 4829, 6, 5, UNI_XPOSIXDIGIT } /* xposixdigit */, + { 0, 9113, 8817, 4, 2, UNI_CCC__34 } /* ccc=34 */, + { 0, 9365, 9105, 4, 4, UNI_CAKM } /* scx=cakm */, + { 0, 96, 0, 5, 0, UNI_XPOSIXALPHA } /* alpha */, + { 0, 1362, 2912, 24, 18, UNI_CCC__216 } /* canonicalcombiningclass=attachedaboveright */, + { 3, 8233, 7796, 7, 8, UNI_BASS } /* script=bassavah */, + { 0, 6005, 2591, 4, 9, UNI_COUNTINGROD } /* incountingrod */, + { 19, 3868, 5809, 16, 2, UNI_PF } /* generalcategory=pf */, + { 1, 8424, 7008, 6, 10, UNI_INPHOENICIAN } /* block=phoenician */, + { 7, 8879, 5284, 3, 13, UNI_PHONETICEXTSUP } /* inphoneticextsup */, + { 0, 9093, 3932, 4, 16, UNI_HIGHPUSURROGATES } /* blk=highpusurrogates */, + { 104, 3293, 1099, 3, 3, UNI_UCAS } /* inucas */, + { 1, 8886, 9189, 3, 4, UNI_HMNP } /* sc=hmnp */, + { 1, 2148, 1290, 3, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* insymbolsandpictographsexta */, + { 0, 6194, 4658, 3, 14, UNI_NARB } /* inoldnortharabian */, + { 1, 184, 8485, 3, 5, UNI_CAKM } /* ischakma */, + { 0, 9093, 4933, 4, 14, UNI_INGREEK } /* blk=greekandcoptic */, + { 32, 2148, 3309, 3, 17, UNI_SMALLKANAEXT } /* insmallkanaextension */, + { 0, 8332, 4822, 3, 12, UNI_POSIXXDIGIT } /* isasciihexdigit */, + { 2, 8424, 5017, 6, 14, UNI_LATINEXTC } /* block=latinextendedc */, + { 6, 9365, 4297, 4, 7, UNI_BRAI } /* scx=braille */, + { 7, 184, 7221, 2, 9, UNI_EMOTICONS } /* isemoticons */, + { 1, 5448, 0, 13, 0, UNI_BLOCKELEMENTS } /* blockelements */, + { 0, 8954, 0, 5, 0, UNI_xidc_values_index } /* xidc= */, + { 0, 1576, 0, 23, 0, UNI_GEOMETRICSHAPESEXT } /* geometricshapesextended */, + { 5, 9093, 1856, 4, 11, UNI_NUMBERFORMS } /* blk=numberforms */, + { 2, 6918, 7176, 10, 9, UNI_LB__AI } /* linebreak=ambiguous */, + { 1, 184, 8072, 2, 4, UNI_ELYM } /* iselym */, + { 3, 8954, 3, 5, 1, -UNI_XIDC } /* xidc=f */, + { 0, 9049, 9722, 4, 3, UNI_AGE__9 } /* age=v90 */, + { 20, 8289, 0, 7, 0, UNI_LANA } /* taitham */, + { 7, 8424, 8038, 7, 6, UNI_CJKEXTE } /* block=cjkexte */, + { 6, 3948, 1696, 3, 2, UNI_INVAI } /* invai */, + { 0, 9365, 8430, 4, 4, UNI_CARI } /* scx=cari */, + { 0, 8424, 1824, 7, 21, UNI_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatideographssup */, + { 0, 8424, 3020, 6, 13, UNI_DEVANAGARIEXT } /* block=devanagariext */, + { 0, 184, 4975, 2, 14, UNI_KANASUP } /* iskanasupplement */, + { 0, 9093, 3038, 4, 8, UNI_INETHIOPIC } /* blk=ethiopic */, + { 2, 4204, 0, 6, 0, UNI_SYRC } /* syriac */, + { 0, 8233, 6898, 7, 10, UNI_KHAR } /* script=kharoshthi */, + { 4, 6918, 5325, 10, 9, UNI_LB__QU } /* linebreak=quotation */, + { 0, 8604, 36, 6, 1, UNI_QMARK } /* qmark=t */, + { 0, 9365, 7980, 4, 8, UNI_UGAR } /* scx=ugaritic */, + { 2, 9901, 9916, 8, 5, UNI_XPOSIXBLANK } /* isxposixblank */, + { 3, 9093, 6898, 4, 10, UNI_INKHAROSHTHI } /* blk=kharoshthi */, + { 0, 3868, 1014, 16, 6, UNI_L } /* generalcategory=letter */, + { 2, 1362, 6393, 24, 11, UNI_CCC__DA } /* canonicalcombiningclass=doubleabove */, + { 10, 6918, 9310, 10, 2, UNI_LB__SG } /* linebreak=sg */, + { 0, 8233, 8072, 7, 4, UNI_ELYM } /* script=elym */, + { 7, 8424, 2590, 7, 10, UNI_COUNTINGROD } /* block=countingrod */, + { 0, 8233, 9493, 7, 4, UNI_ZZZZ } /* script=zzzz */, + { 0, 1482, 0, 24, 0, UNI_inpc_values_index } /* indicpositionalcategory= */, + { 1, 1158, 8297, 3, 6, UNI_INTAIVIET } /* intaiviet */, + { 3, 6828, 2192, 10, 3, UNI_BC__PDI } /* bidiclass=pdi */, + { 0, 8886, 8282, 3, 7, UNI_SC__TGLG } /* sc=tagalog */, + { 10, 9113, 2373, 4, 4, UNI_CCC__L } /* ccc=left */, + { 0, 2212, 7861, 3, 7, UNI_INHIRAGANA } /* inhiragana */, + { 10, 9153, 4195, 4, 9, UNI_WB__EB } /* gcb=emodifier */, + { 3, 184, 183, 2, 20, UNI_MISCSYMBOLS } /* ismiscellaneoussymbols */, + { 6, 9365, 8538, 4, 4, UNI_KHOJ } /* scx=khoj */, + { 3, 3236, 995, 18, 2, -UNI__PERL_PATWS } /* patternwhitespace=no */, + { 68, 8424, 510, 7, 29, UNI_CJKEXTA } /* block=cjkunifiedideographsextensiona */, + { 1, 8233, 7804, 7, 4, UNI_SC__BUGI } /* script=bugi */, + { 0, 9599, 1, 3, 1, -UNI_CI } /* ci=n */, + { 0, 4297, 0, 4, 0, UNI_BRAI } /* brai */, + { 0, 9629, 1696, 3, 2, UNI_LB__AI } /* lb=ai */, + { 13, 9093, 9425, 4, 4, UNI_INTHAI } /* blk=thai */, + { 1, 8886, 8261, 3, 7, UNI_SOYO } /* sc=soyombo */, + { 3, 5760, 7446, 13, 1, UNI_NV__2 } /* numericvalue=2 */, + { 36, 8338, 26, 7, 1, UNI_XPOSIXSPACE } /* wspace=y */, + { 0, 9365, 7892, 4, 8, UNI_JAVA } /* scx=javanese */, + { 6, 7275, 0, 9, 0, UNI_LATINEXTD } /* latinextd */, + { 0, 8424, 3519, 7, 16, UNI_CYRILLICEXTB } /* block=cyrillicextendedb */, + { 2, 1362, 2920, 24, 5, UNI_CCC__A } /* canonicalcombiningclass=above */, + { 0, 5760, 9010, 13, 3, UNI_NV__3_SLASH_2 } /* numericvalue=3/2 */, + { 2, 8424, 1289, 6, 25, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* block=symbolsandpictographsexta */, + { 2, 8886, 3620, 3, 10, UNI_SC__MANI } /* sc=manichaean */, + { 0, 8874, 36, 5, 1, UNI_IDST } /* idst=t */, + { 1, 4826, 9433, 9, 4, UNI_XPOSIXXDIGIT } /* hexdigit=true */, + { 9, 9093, 8859, 4, 5, UNI_INDOGRA } /* blk=dogra */, + { 0, 9365, 8149, 4, 7, UNI_MULT } /* scx=multani */, + { 0, 9940, 3248, 6, 5, UNI_POSIXSPACE } /* isperlspace */, + { 22, 8332, 9054, 3, 3, UNI_AGHB } /* isaghb */, + { 0, 6051, 0, 4, 0, UNI_MAHJ } /* mahj */, + { 32, 184, 8017, 3, 6, UNI_CJKEXTB } /* iscjkextb */, + { 3, 9602, 9433, 3, 4, UNI_DI } /* di=true */, + { 1, 184, 6679, 2, 10, UNI_SD } /* issoftdotted */, + { 0, 9946, 9782, 7, 4, UNI_XPOSIXSPACE } /* isspaceperl */, + { 1, 21, 5578, 2, 13, UNI_KANAEXTA } /* inkanaextendeda */, + { 3, 184, 8850, 3, 3, UNI_CWCM } /* iscwcm */, + { 2, 8886, 9217, 3, 4, UNI_LAO } /* sc=laoo */, + { 130, 467, 0, 5, 0, UNI_P } /* punct */, + { 0, 8886, 8002, 3, 7, UNI_SC__BENG } /* sc=bengali */, + { 18, 184, 9489, 2, 4, UNI_ZYYY } /* iszyyy */, + { 0, 2106, 34, 21, 2, UNI_GCB__EX } /* graphemeclusterbreak=ex */, + { 0, 1933, 0, 22, 0, UNI_loe_values_index } /* logicalorderexception= */, + { 128, 8685, 0, 4, 0, UNI_hex_values_index } /* hex= */, + { 0, 8586, 9734, 6, 3, UNI_NFCQC__Y } /* nfcqc=yes */, + { 3, 9662, 9734, 3, 3, UNI_SD } /* sd=yes */, + { 77, 8592, 9734, 6, 3, UNI_NFDQC__Y } /* nfdqc=yes */, + { 4, 4657, 0, 15, 0, UNI_NARB } /* oldnortharabian */, + { 0, 4975, 0, 14, 0, UNI_KANASUP } /* kanasupplement */, + { 0, 58, 0, 4, 0, UNI_IDEO } /* ideo */, + { 3, 9647, 7436, 3, 8, UNI_NV__1_SLASH_9 } /* nv=1.11e-01 */, + { 0, 1362, 8745, 25, 4, UNI_CCC__20 } /* canonicalcombiningclass=ccc20 */, + { 4, 2703, 995, 19, 2, -UNI_IDST } /* idstrinaryoperator=no */, + { 0, 9608, 8574, 3, 6, UNI_EA__NA } /* ea=narrow */, + { 6, 21, 1188, 2, 8, UNI_INKATAKANA } /* inkatakana */, + { 0, 184, 1622, 2, 14, UNI_LATINEXTA } /* islatinextendeda */, + { 2, 184, 5199, 2, 14, UNI_SK } /* ismodifiersymbol */, + { 3, 21, 4822, 3, 4, UNI_ASCII } /* inascii */, + { 1, 3671, 9429, 17, 4, UNI_TIBT } /* scriptextensions=tibt */, + { 1, 9365, 6992, 5, 6, UNI_SOGD } /* scx=sogdian */, + { 0, 8086, 8864, 7, 5, -UNI_GRBASE } /* grbase=false */, + { 1, 8233, 8859, 7, 5, UNI_SC__DOGR } /* script=dogra */, + { 2, 4140, 0, 16, 0, UNI_PO } /* otherpunctuation */, + { 2, 9623, 4947, 3, 14, UNI_JG__HAMZAONHEHGOAL } /* jg=hamzaonhehgoal */, + { 5, 9602, 26, 3, 1, UNI_DI } /* di=y */, + { 1, 6005, 660, 3, 29, UNI_CJKEXTF } /* incjkunifiedideographsextensionf */, + { 11, 2684, 881, 19, 1, UNI_GCB__V } /* hangulsyllabletype=v */, + { 2, 9093, 4204, 4, 6, UNI_INSYRIAC } /* blk=syriac */, + { 3, 6885, 8101, 3, 5, UNI_HYPHEN } /* ishyphen */, + { 16, 8886, 7374, 3, 9, UNI_SAMR } /* sc=samaritan */, + { 0, 184, 8538, 2, 4, UNI_KHOJ } /* iskhoj */, + { 0, 8332, 5800, 3, 11, UNI_ALPHABETICPF } /* isalphabeticpf */, + { 0, 8886, 9261, 3, 3, UNI_MRO } /* sc=mro */, + { 1, 4705, 9418, 3, 3, UNI_TFNG } /* istfng */, + { 0, 9916, 0, 5, 0, UNI_XPOSIXBLANK } /* blank */, + { 20, 2148, 3706, 3, 16, UNI_SMALLFORMS } /* insmallformvariants */, + { 14, 9093, 779, 4, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsup */, + { 15, 84, 0, 4, 0, UNI_MATH } /* math */, + { 0, 184, 9134, 3, 3, UNI_CYRL } /* iscyrl */, + { 4, 9620, 3227, 3, 9, UNI_Z } /* gc=separator */, + { 18, 8424, 8079, 6, 7, UNI_INGRANTHA } /* block=grantha */, + { 0, 4705, 3327, 3, 10, UNI_TAIXUANJING } /* istaixuanjing */, + { 0, 5760, 7508, 13, 8, UNI_NV__1_SLASH_5 } /* numericvalue=2.00e-01 */, + { 0, 8556, 995, 6, 2, -UNI_XPOSIXLOWER } /* lower=no */, + { 0, 3868, 598, 16, 2, UNI_XPOSIXCNTRL } /* generalcategory=cc */, + { 1, 9647, 9013, 3, 4, UNI_NV__15_SLASH_2 } /* nv=15/2 */, + { 4, 6005, 2591, 4, 17, UNI_COUNTINGROD } /* incountingrodnumerals */, + { 0, 8520, 9734, 6, 3, UNI_JOINC } /* joinc=yes */, + { 1, 9145, 0, 4, 0, UNI_DSRT } /* dsrt */, + { 1, 8037, 0, 7, 0, UNI_CJKEXTE } /* cjkexte */, + { 0, 8079, 0, 7, 0, UNI_GRAN } /* grantha */, + { 16, 8233, 2409, 7, 4, UNI_SC__MONG } /* script=mong */, + { 0, 3671, 9269, 17, 4, UNI_MYMR } /* scriptextensions=mymr */, + { 10, 9113, 1701, 4, 2, UNI_CCC__BR } /* ccc=br */, + { 0, 9647, 7652, 3, 8, UNI_NV__7_SLASH_12 } /* nv=5.83e-01 */, + { 0, 3671, 6602, 17, 11, UNI_NAND } /* scriptextensions=nandinagari */, + { 9, 8170, 0, 9, 0, UNI_NFKDQC__N } /* nfkdqc=no */, + { 5, 5565, 2561, 13, 3, UNI_JG__YEH } /* joininggroup=yeh */, + { 1, 9940, 7128, 6, 4, UNI_POSIXWORD } /* isperlword */, + { 0, 8412, 3, 6, 1, -UNI_BIDIC } /* bidic=f */, + { 0, 9620, 4732, 3, 15, UNI_TITLE } /* gc=titlecaseletter */, + { 1, 7018, 9674, 10, 3, UNI_IN__2 } /* presentin=v20 */, + { 2, 9593, 9635, 3, 3, UNI_BC__LRI } /* bc=lri */, + { 0, 8219, 9734, 7, 3, UNI_PATSYN } /* patsyn=yes */, + { 1, 184, 316, 2, 33, UNI_SUPMATHOPERATORS } /* issupplementalmathematicaloperators */, + { 0, 9647, 8802, 3, 2, UNI_NV__31 } /* nv=31 */, + { 1, 8424, 8093, 6, 7, UNI_INHANUNOO } /* block=hanunoo */, + { 29, 9093, 8526, 4, 6, UNI_INKAITHI } /* blk=kaithi */, + { 0, 9629, 0, 3, 0, UNI_lb_values_index } /* lb= */, + { 3, 5760, 7723, 13, 2, UNI_NV__18 } /* numericvalue=18 */, + { 5, 9647, 5409, 3, 2, UNI_NV__10 } /* nv=10 */, + { 2, 7025, 9692, 3, 3, UNI_IN__4_DOT_1 } /* in=v41 */, + { 40, 184, 1289, 2, 25, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* issymbolsandpictographsexta */, + { 2, 3671, 7788, 17, 8, UNI_BALI } /* scriptextensions=balinese */, + { 0, 8424, 467, 6, 11, UNI_INPUNCTUATION } /* block=punctuation */, + { 4, 8177, 0, 7, 0, UNI_NB } /* noblock */, + { 2, 8586, 8904, 6, 5, UNI_NFCQC__M } /* nfcqc=maybe */, + { 2, 2204, 9306, 3, 3, UNI_ORYA } /* isorya */, + { 0, 9193, 9, 4, 2, UNI_HST__NA } /* hst=na */, + { 24, 8233, 6246, 7, 4, UNI_HUNG } /* script=hung */, + { 26, 8604, 9433, 6, 4, UNI_QMARK } /* qmark=true */, + { 0, 4778, 1, 3, 33, UNI_UCAS } /* isunifiedcanadianaboriginalsyllabics */, + { 4, 3671, 9333, 17, 4, UNI_COPT } /* scriptextensions=qaac */, + { 0, 9781, 9814, 6, 21, UNI__PERL_IS_IN_MULTI_CHAR_FOLD } /* _perl_is_in_multi_char_fold */, + { 0, 1338, 0, 24, 0, UNI_ARABICPFB } /* arabicpresentationformsb */, + { 21, 3951, 415, 3, 31, UNI_INIDC } /* isideographicdescriptioncharacters */, + { 2, 4507, 0, 15, 0, UNI_LOWERCASELETTER } /* lowercaseletter */, + { 1, 7128, 5952, 10, 3, UNI_LB__ZWJ } /* wordbreak=zwj */, + { 1, 9926, 3248, 7, 5, UNI_XPOSIXBLANK } /* ishorizspace */, + { 4, 8219, 26, 7, 1, UNI_PATSYN } /* patsyn=y */, + { 1, 9933, 17, 5, 1, UNI_XPEO } /* isxpeo */, + { 3, 8233, 8514, 7, 4, UNI_HATR } /* script=hatr */, + { 1, 2708, 7187, 4, 7, UNI_ARABICPFA } /* inarabicpfa */, + { 8, 8424, 3996, 6, 16, UNI_LINEARBSYLLABARY } /* block=linearbsyllabary */, + { 5, 1362, 4701, 24, 2, UNI_CCC__0 } /* canonicalcombiningclass=nr */, + { 22, 9093, 2779, 4, 12, UNI_MONGOLIANSUP } /* blk=mongoliansup */, + { 0, 8233, 8939, 7, 5, UNI_SC__TALE } /* script=taile */, + { 7, 1977, 995, 22, 2, -UNI__PERL_NCHAR } /* noncharactercodepoint=no */, + { 5, 7420, 0, 7, 0, UNI_IDS } /* idstart */, + { 3, 8424, 2779, 6, 12, UNI_MONGOLIANSUP } /* block=mongoliansup */, + { 0, 9782, 3248, 4, 5, UNI_POSIXSPACE } /* perlspace */, + { 0, 8955, 9734, 4, 3, UNI_IDC } /* idc=yes */, + { 0, 3671, 6554, 18, 3, UNI_SAMR } /* scriptextensions=samr */, + { 5, 3671, 8296, 17, 7, UNI_TAVT } /* scriptextensions=taiviet */, + { 0, 6828, 407, 10, 2, UNI_BC__ON } /* bidiclass=on */, + { 5, 9940, 0, 4, 0, UNI_PE } /* ispe */, + { 43, 8424, 7248, 6, 9, UNI_INKHUDAWADI } /* block=khudawadi */, + { 3, 493, 0, 3, 0, UNI_HAN } /* han */, + { 5, 184, 2333, 2, 13, UNI_GLAGOLITICSUP } /* isglagoliticsup */, + { 15, 1497, 107, 10, 5, UNI_S } /* category=symbol */, + { 0, 8233, 9101, 7, 4, UNI_SC__BUHD } /* script=buhd */, + { 0, 4705, 5768, 3, 3, UNI_TALU } /* istalu */, + { 1, 8520, 36, 6, 1, UNI_JOINC } /* joinc=t */, + { 0, 3671, 9169, 17, 4, UNI_GUJR } /* scriptextensions=gujr */, + { 0, 3728, 0, 11, 0, UNI_SGNW } /* signwriting */, + { 5, 8233, 9421, 7, 4, UNI_SC__TGLG } /* script=tglg */, + { 0, 8886, 493, 3, 3, UNI_SC__HAN } /* sc=han */, + { 0, 7932, 26, 8, 1, UNI_RADICAL } /* radical=y */, + { 20, 5760, 8382, 13, 6, UNI_NV__600000 } /* numericvalue=600000 */, + { 12, 3002, 7836, 18, 3, UNI_DT__FRA } /* decompositiontype=fra */, + { 3, 8424, 921, 6, 28, UNI_VSSUP } /* block=variationselectorssupplement */, + { 24, 4778, 1813, 3, 4, UNI_XPOSIXUPPER } /* isupper */, + { 8, 8424, 414, 6, 32, UNI_INIDC } /* block=ideographicdescriptioncharacters */, + { 10, 3868, 24, 16, 1, UNI_L } /* generalcategory=l */, + { 48, 3948, 4763, 3, 7, UNI_VEDICEXT } /* invedicext */, + { 4, 8424, 1622, 6, 23, UNI_LATINEXTADDITIONAL } /* block=latinextendedadditional */, + { 0, 184, 6003, 2, 5, UNI_JOINC } /* isjoinc */, + { 0, 184, 1188, 2, 8, UNI_KANA } /* iskatakana */, + { 115, 3868, 698, 16, 6, UNI_N } /* generalcategory=number */, + { 20, 8424, 3884, 6, 11, UNI_GEORGIANEXT } /* block=georgianext */, + { 33, 9904, 4828, 5, 6, UNI_POSIXXDIGIT } /* posixxdigit */, + { 6, 8424, 540, 7, 29, UNI_CJKEXTB } /* block=cjkunifiedideographsextensionb */, + { 0, 8886, 9089, 3, 4, UNI_BHKS } /* sc=bhks */, + { 8, 9113, 8750, 5, 4, UNI_CCC__21 } /* ccc=ccc21 */, + { 11, 5760, 7495, 13, 1, UNI_NV__7 } /* numericvalue=7 */, + { 11, 9093, 78, 4, 35, UNI_ARABICMATH } /* blk=arabicmathematicalalphabeticsymbols */, + { 0, 8424, 7347, 6, 9, UNI_INOLDTURKIC } /* block=oldturkic */, + { 9, 3671, 6243, 17, 12, UNI_HUNG } /* scriptextensions=oldhungarian */, + { 32, 3128, 36, 18, 1, UNI_IDSB } /* idsbinaryoperator=t */, + { 134, 9049, 8997, 4, 4, UNI_AGE__11 } /* age=11.0 */, + { 0, 8424, 7048, 6, 10, UNI_INSAURASHTRA } /* block=saurashtra */, + { 3, 9620, 1767, 3, 2, UNI_NL } /* gc=nl */, + { 1, 3164, 0, 9, 0, UNI_LATINEXTA } /* latinexta */, + { 0, 8879, 3350, 5, 12, UNI_INPC__LEFTANDRIGHT } /* inpc=leftandright */, + { 1, 9365, 8079, 4, 7, UNI_GRAN } /* scx=grantha */, + { 5, 9093, 467, 4, 11, UNI_INPUNCTUATION } /* blk=punctuation */, + { 1, 184, 3308, 2, 18, UNI_SMALLKANAEXT } /* issmallkanaextension */, + { 1, 42, 0, 16, 0, UNI_CJKCOMPAT } /* cjkcompatibility */, + { 1, 7018, 9692, 10, 3, UNI_IN__4_DOT_1 } /* presentin=v41 */, + { 1, 8424, 5967, 6, 6, UNI_INHEBREW } /* block=hebrew */, + { 4, 8424, 690, 7, 15, UNI_CUNEIFORMNUMBERS } /* block=cuneiformnumbers */, + { 3, 8424, 6316, 6, 3, UNI_INIDC } /* block=idc */, + { 0, 1790, 0, 9, 0, UNI_TITLE } /* titlecase */, + { 0, 3671, 7812, 17, 4, UNI_DUPL } /* scriptextensions=dupl */, + { 16, 1933, 26, 22, 1, UNI_LOE } /* logicalorderexception=y */, + { 0, 9365, 8430, 4, 6, UNI_CARI } /* scx=carian */, + { 0, 9946, 8255, 3, 6, UNI_SIDD } /* issiddham */, + { 0, 6316, 995, 11, 2, -UNI_IDC } /* idcontinue=no */, + { 0, 8616, 3, 6, 1, -UNI_STERM } /* sterm=f */, + { 0, 9365, 4657, 4, 15, UNI_NARB } /* scx=oldnortharabian */, + { 0, 8233, 8114, 7, 7, UNI_SC__KALI } /* script=kayahli */, + { 1, 8886, 3836, 3, 7, UNI_SC__CPRT } /* sc=cypriot */, + { 0, 8884, 4327, 5, 15, UNI_INSC__CONSONANTKILLER } /* insc=consonantkiller */, + { 1, 8424, 4204, 6, 6, UNI_INSYRIAC } /* block=syriac */, + { 5, 8886, 9101, 3, 4, UNI_SC__BUHD } /* sc=buhd */, + { 0, 1911, 7320, 22, 9, UNI_INSC__NONJOINER } /* indicsyllabiccategory=nonjoiner */, + { 12, 184, 9916, 2, 5, UNI_XPOSIXBLANK } /* isblank */, + { 0, 7341, 0, 4, 0, UNI_PERM } /* perm */, + { 1, 8424, 7804, 6, 8, UNI_INBUGINESE } /* block=buginese */, + { 3, 9647, 7470, 3, 2, UNI_NV__50 } /* nv=50 */, + { 3, 9662, 0, 3, 0, UNI_sd_values_index } /* sd= */, + { 4, 1911, 4188, 22, 16, UNI_INSC__SYLLABLEMODIFIER } /* indicsyllabiccategory=syllablemodifier */, + { 2, 9093, 4417, 4, 15, UNI_DIACRITICALSEXT } /* blk=diacriticalsext */, + { 3, 3948, 4763, 3, 14, UNI_VEDICEXT } /* invedicextensions */, + { 3, 1362, 8760, 25, 4, UNI_CCC__23 } /* canonicalcombiningclass=ccc23 */, + { 6, 184, 3020, 2, 10, UNI_DEVA } /* isdevanagari */, + { 0, 6918, 125, 10, 2, UNI_LB__CR } /* linebreak=cr */, + { 96, 184, 3290, 2, 4, UNI_RUMI } /* isrumi */, + { 0, 5269, 9433, 14, 4, UNI_PATSYN } /* patternsyntax=true */, + { 0, 4705, 8290, 3, 6, UNI_LANA } /* istaitham */, + { 0, 8685, 3, 4, 1, -UNI_XPOSIXXDIGIT } /* hex=f */, + { 33, 184, 6602, 2, 11, UNI_NAND } /* isnandinagari */, + { 29, 5311, 0, 14, 0, UNI_PHLP } /* psalterpahlavi */, + { 1, 8886, 3110, 3, 4, UNI_SC__GEOR } /* sc=geor */, + { 1, 9181, 0, 4, 0, UNI_HLUW } /* hluw */, + { 0, 1159, 39, 3, 2, UNI_XPOSIXDIGIT } /* nt=de */, + { 2, 9909, 7128, 7, 4, UNI_POSIXWORD } /* isposixword */, + { 1, 9593, 2413, 3, 20, UNI_BC__PDF } /* bc=popdirectionalformat */, + { 4, 184, 84, 2, 4, UNI_MATH } /* ismath */, + { 0, 6005, 510, 3, 29, UNI_CJKEXTA } /* incjkunifiedideographsextensiona */, + { 4, 5760, 8358, 13, 4, UNI_NV__3000 } /* numericvalue=3000 */, + { 0, 184, 9353, 2, 4, UNI_RUNR } /* isrunr */, + { 104, 8233, 2930, 7, 8, UNI_CHER } /* script=cherokee */, + { 0, 8424, 808, 6, 29, UNI_MISCARROWS } /* block=miscellaneoussymbolsandarrows */, + { 0, 3671, 8550, 17, 4, UNI_LEPC } /* scriptextensions=lepc */, + { 8, 5760, 9021, 13, 4, UNI_NV__3_SLASH_16 } /* numericvalue=3/16 */, + { 0, 9093, 446, 4, 18, UNI_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbols */, + { 2, 4946, 0, 4, 0, UNI_CHAM } /* cham */, + { 24, 9313, 3, 4, 1, -UNI_PCM } /* pcm=f */, + { 0, 9365, 2085, 4, 8, UNI_CYRL } /* scx=cyrillic */, + { 12, 3603, 0, 17, 0, UNI_LETTERLIKESYMBOLS } /* letterlikesymbols */, + { 12, 5339, 1768, 14, 5, UNI_SB__LO } /* sentencebreak=lower */, + { 9, 8886, 8514, 3, 4, UNI_HATR } /* sc=hatr */, + { 19, 8640, 26, 6, 1, UNI_XPOSIXUPPER } /* upper=y */, + { 1, 8886, 9221, 3, 4, UNI_SC__LATN } /* sc=latn */, + { 1, 9357, 0, 4, 0, UNI_SAMR } /* samr */, + { 1, 8233, 9333, 7, 4, UNI_SC__COPT } /* script=qaac */, + { 0, 9093, 5967, 4, 6, UNI_INHEBREW } /* blk=hebrew */, + { 2, 3243, 0, 11, 0, UNI_wspace_values_index } /* whitespace= */, + { 5, 184, 1933, 2, 21, UNI_LOE } /* islogicalorderexception */, + { 2, 8233, 9325, 7, 4, UNI_MIAO } /* script=plrd */, + { 1, 9647, 7495, 3, 1, UNI_NV__7 } /* nv=7 */, + { 9, 3671, 6558, 17, 11, UNI_MEDF } /* scriptextensions=medefaidrin */, + { 0, 9113, 8451, 4, 3, UNI_CCC__118 } /* ccc=118 */, + { 10, 9093, 8282, 4, 7, UNI_INTAGALOG } /* blk=tagalog */, + { 7, 8044, 0, 7, 0, UNI_CJKEXTF } /* cjkextf */, + { 0, 3251, 9734, 3, 3, UNI_CE } /* ce=yes */, + { 1, 8874, 26, 5, 1, UNI_IDST } /* idst=y */, + { 3, 8424, 4492, 6, 15, UNI_INIMPERIALARAMAIC } /* block=imperialaramaic */, + { 0, 9626, 0, 4, 0, UNI_JT__L } /* jt=l */, + { 130, 9113, 9539, 4, 3, UNI_CCC__DB } /* ccc=233 */, + { 1, 2984, 0, 4, 0, UNI_COPT } /* copt */, + { 1, 8944, 0, 5, 0, UNI_TAKR } /* takri */, + { 8, 8424, 8934, 6, 5, UNI_INRUNIC } /* block=runic */, + { 1, 3964, 0, 9, 0, UNI_LATIN1 } /* latin1sup */, + { 0, 9647, 7614, 3, 2, UNI_NV__17 } /* nv=17 */, + { 1, 9093, 6051, 4, 12, UNI_MAHJONG } /* blk=mahjongtiles */, + { 70, 5760, 8675, 13, 4, UNI_NV__1_SLASH_12 } /* numericvalue=1/12 */, + { 0, 3671, 2169, 17, 11, UNI_MTEI } /* scriptextensions=meeteimayek */, + { 1, 6939, 0, 2, 0, UNI_VS } /* vs */, + { 0, 3398, 3, 18, 1, -UNI_VS } /* variationselector=f */, + { 1, 9049, 7631, 4, 1, UNI_AGE__9 } /* age=9 */, + { 0, 6005, 5896, 3, 11, UNI_CYRILLICEXTC } /* incyrillicextc */, + { 5, 5760, 8394, 13, 4, UNI_NV__8000 } /* numericvalue=8000 */, + { 1, 8424, 43, 7, 15, UNI_CJKCOMPAT } /* block=cjkcompatibility */, + { 0, 7098, 0, 10, 0, UNI_CN } /* unassigned */, + { 8, 184, 2779, 2, 19, UNI_MONGOLIANSUP } /* ismongoliansupplement */, + { 3, 6159, 0, 12, 0, UNI_GONM } /* masaramgondi */, + { 0, 9647, 7612, 3, 8, UNI_NV__5_SLASH_12 } /* nv=4.17e-01 */, + { 48, 9365, 8892, 4, 4, UNI_PHLI } /* scx=phli */, + { 0, 9093, 8093, 4, 7, UNI_INHANUNOO } /* blk=hanunoo */, + { 0, 8424, 250, 6, 33, UNI_MISCMATHSYMBOLSA } /* block=miscellaneousmathematicalsymbolsa */, + { 0, 6005, 1824, 3, 21, UNI_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatideographssup */, + { 0, 8886, 4220, 3, 6, UNI_TANG } /* sc=tangut */, + { 4, 8598, 0, 5, 0, UNI__PERL_PATWS } /* patws */, + { 0, 9365, 3980, 4, 7, UNI_LINB } /* scx=linearb */, + { 9, 184, 2086, 3, 17, UNI_CYRILLICSUP } /* iscyrillicsupplement */, + { 1, 2708, 7196, 4, 7, UNI_ARABICPFB } /* inarabicpfb */, + { 1, 9093, 6839, 5, 9, UNI_BOXDRAWING } /* blk=boxdrawing */, + { 0, 6723, 0, 4, 0, UNI_SYLO } /* sylo */, + { 6, 184, 4108, 2, 7, UNI_MYMR } /* ismyanmar */, + { 1, 9121, 9433, 4, 4, UNI_CWL } /* cwl=true */, + { 4, 2708, 6800, 4, 8, UNI_ARABICEXTA } /* inarabicexta */, + { 0, 8233, 2741, 7, 19, UNI_MERO } /* script=meroitichieroglyphs */, + { 1, 9605, 435, 4, 2, UNI_DT__ENC } /* dt=enc */, + { 0, 8914, 0, 5, 0, UNI_NSHU } /* nushu */, + { 48, 184, 1867, 2, 22, UNI_DIACRITICALSFORSYMBOLS } /* isdiacriticalsforsymbols */, + { 0, 1482, 6383, 3, 10, UNI_DOMINO } /* indominotiles */, + { 0, 5760, 7614, 13, 2, UNI_NV__17 } /* numericvalue=17 */, + { 0, 7356, 0, 9, 0, UNI_PALM } /* palmyrene */, + { 1, 9647, 8388, 3, 4, UNI_NV__7000 } /* nv=7000 */, + { 0, 1362, 7459, 24, 2, UNI_CCC__21 } /* canonicalcombiningclass=21 */, + { 1, 8879, 2473, 5, 20, UNI_INPC__TOPANDBOTTOMANDRIGHT } /* inpc=topandbottomandright */, + { 0, 8879, 5461, 5, 13, UNI_INPC__BOTTOMANDLEFT } /* inpc=bottomandleft */, + { 1, 9093, 3552, 4, 11, UNI_ETHIOPICEXT } /* blk=ethiopicext */, + { 8, 8219, 36, 7, 1, UNI_PATSYN } /* patsyn=t */, + { 3, 9629, 23, 3, 2, UNI_LB__AL } /* lb=al */, + { 0, 184, 8502, 2, 4, UNI_GOTH } /* isgoth */, + { 0, 8233, 8526, 7, 6, UNI_SC__KTHI } /* script=kaithi */, + { 0, 8586, 17, 7, 1, UNI_COMPEX } /* nfcqc=no */, + { 2, 3951, 3147, 3, 17, UNI_PI } /* isinitialpunctuation */, + { 10, 184, 2931, 3, 10, UNI_CHEROKEESUP } /* ischerokeesup */, + { 2, 4642, 26, 15, 1, UNI_DT__NONE } /* nfkdquickcheck=y */, + { 6, 8550, 0, 6, 0, UNI_LEPC } /* lepcha */, + { 1, 2148, 2837, 3, 18, UNI_SUNDANESESUP } /* insundanesesupplement */, + { 4, 8424, 1188, 6, 26, UNI_KATAKANAEXT } /* block=katakanaphoneticextensions */, + { 0, 4462, 3, 15, 1, -UNI_GREXT } /* graphemeextend=f */, + { 8, 3671, 4108, 17, 7, UNI_MYMR } /* scriptextensions=myanmar */, + { 2, 184, 6602, 2, 4, UNI_NAND } /* isnand */, + { 1, 2106, 125, 21, 2, UNI_LB__CR } /* graphemeclusterbreak=cr */, + { 0, 1159, 4829, 3, 5, UNI_NT__DI } /* nt=digit */, + { 0, 8233, 0, 14, 0, UNI_SC__SHRD } /* script=sharada */, + { 0, 8160, 721, 4, 19, UNI_ENCLOSEDALPHANUM } /* inenclosedalphanumerics */, + { 1, 9093, 2127, 4, 14, UNI_INHANIFIROHINGYA } /* blk=hanifirohingya */, + { 15, 5565, 4060, 13, 16, UNI_JG__MANICHAEANTWENTY } /* joininggroup=manichaeantwenty */, + { 16, 9365, 2741, 4, 19, UNI_MERO } /* scx=meroitichieroglyphs */, + { 8, 2703, 0, 18, 0, UNI_IDST } /* idstrinaryoperator */, + { 7, 8592, 1, 6, 1, UNI_DT__CAN } /* nfdqc=n */, + { 4, 3248, 0, 5, 0, UNI_XPOSIXSPACE } /* space */, + { 7, 112, 0, 2, 0, UNI_SC } /* sc */, + { 17, 9049, 9701, 4, 3, UNI_AGE__5_DOT_2 } /* age=v52 */, + { 1, 1158, 2022, 3, 21, UNI_TRANSPORTANDMAP } /* intransportandmapsymbols */, + { 0, 8233, 8430, 7, 4, UNI_CARI } /* script=cari */, + { 0, 9623, 6778, 3, 10, UNI_JG__AFRICANFEH } /* jg=africanfeh */, + { 24, 8424, 8929, 6, 5, UNI_INOSAGE } /* block=osage */, + { 25, 3868, 1029, 16, 2, UNI_SO } /* generalcategory=so */, + { 0, 4821, 1, 14, 1, -UNI_POSIXXDIGIT } /* asciihexdigit=n */, + { 0, 8424, 2836, 6, 19, UNI_SUNDANESESUP } /* block=sundanesesupplement */, + { 17, 6005, 3519, 3, 16, UNI_CYRILLICEXTB } /* incyrillicextendedb */, + { 0, 8424, 5367, 6, 14, UNI_SUPPUNCTUATION } /* block=suppunctuation */, + { 1, 8424, 8024, 7, 6, UNI_CJKEXTC } /* block=cjkextc */, + { 0, 8617, 9434, 6, 3, UNI_TERM } /* term=true */, + { 4, 3868, 697, 16, 2, UNI_MN } /* generalcategory=mn */, + { 0, 8871, 1129, 3, 2, UNI_SB__ST } /* sb=st */, + { 0, 5760, 7462, 13, 1, UNI_NV__4 } /* numericvalue=4 */, + { 0, 7257, 0, 9, 0, UNI_LATINEXTB } /* latinextb */, + { 0, 1362, 9536, 24, 3, UNI_CCC__AR } /* canonicalcombiningclass=232 */, + { 0, 8879, 8227, 3, 6, UNI_INPHAGSPA } /* inphagspa */, + { 2, 7025, 9587, 3, 3, UNI_IN__9 } /* in=9.0 */, + { 1, 9365, 3110, 4, 8, UNI_GEOR } /* scx=georgian */, + { 1, 9365, 3020, 4, 10, UNI_DEVA } /* scx=devanagari */, + { 0, 9365, 7804, 4, 8, UNI_BUGI } /* scx=buginese */, + { 17, 8233, 6724, 8, 3, UNI_SC__SYLO } /* script=sylo */, + { 0, 9365, 7248, 4, 9, UNI_SIND } /* scx=khudawadi */, + { 0, 184, 4297, 2, 7, UNI_BRAI } /* isbraille */, + { 14, 5760, 9033, 13, 3, UNI_NV__3_SLASH_8 } /* numericvalue=3/8 */, + { 24, 184, 2065, 3, 20, UNI_CJKRADICALSSUP } /* iscjkradicalssupplement */, + { 1, 1497, 5255, 9, 14, UNI_MN } /* category=nonspacingmark */, + { 9, 9049, 7436, 4, 3, UNI_IN__1_DOT_1 } /* age=1.1 */, + { 1, 7128, 5967, 10, 12, UNI_LB__HL } /* wordbreak=hebrewletter */, + { 2, 9647, 8669, 3, 4, UNI_NV__1_SLASH_32 } /* nv=1/32 */, + { 0, 9197, 0, 4, 0, UNI_KALI } /* kali */, + { 0, 2106, 5346, 21, 2, UNI_WB__EB } /* graphemeclusterbreak=eb */, + { 1, 5513, 26, 13, 1, UNI_GRBASE } /* graphemebase=y */, + { 0, 4705, 8228, 3, 3, UNI_TAGS } /* istags */, + { 0, 8424, 9281, 6, 4, UNI_INNEWA } /* block=newa */, + { 0, 6567, 812, 6, 25, UNI_MISCARROWS } /* inmiscellaneoussymbolsandarrows */, + { 0, 8879, 9, 5, 2, UNI_INPC__NA } /* inpc=na */, + { 0, 8886, 9045, 3, 4, UNI_SC__ADLM } /* sc=adlm */, + { 0, 9201, 0, 4, 0, UNI_KHMR } /* khmr */, + { 0, 3671, 9325, 17, 4, UNI_MIAO } /* scriptextensions=plrd */, + { 2, 8418, 1, 6, 1, -UNI_BIDIM } /* bidim=n */, + { 89, 8580, 9433, 6, 4, UNI__PERL_NCHAR } /* nchar=true */, + { 0, 9909, 6917, 3, 3, UNI_PHLI } /* isphli */, + { 0, 8879, 838, 3, 17, UNI_PHONETICEXT } /* inphoneticextensions */, + { 3, 1482, 4419, 4, 13, UNI_DIACRITICALSEXT } /* indiacriticalsext */, + { 8, 184, 4080, 2, 10, UNI_SM } /* ismathsymbol */, + { 0, 3671, 8289, 17, 7, UNI_LANA } /* scriptextensions=taitham */, + { 0, 8160, 1005, 4, 25, UNI_ENCLOSEDCJK } /* inenclosedcjklettersandmonths */, + { 0, 9113, 9542, 4, 3, UNI_CCC__DA } /* ccc=234 */, + { 0, 8424, 8939, 6, 5, UNI_INTAILE } /* block=taile */, + { 3, 9647, 9557, 3, 3, UNI_NV__3_SLASH_5 } /* nv=3/5 */, + { 0, 9093, 3467, 4, 17, UNI_INCAUCASIANALBANIAN } /* blk=caucasianalbanian */, + { 7, 7128, 73, 10, 2, UNI_WB__EB } /* wordbreak=em */, + { 2, 8886, 9453, 3, 4, UNI_VAI } /* sc=vaii */, + { 134, 9901, 96, 8, 5, UNI_XPOSIXALPHA } /* isxposixalpha */, + { 0, 8884, 6219, 5, 12, UNI_INSC__NUMBERJOINER } /* insc=numberjoiner */, + { 18, 8886, 7860, 3, 4, UNI_SC__HIRA } /* sc=hira */, + { 0, 3981, 1892, 5, 19, UNI_EARLYDYNASTICCUNEIFORM } /* inearlydynasticcuneiform */, + { 0, 8886, 8652, 3, 6, UNI_WCHO } /* sc=wancho */, + { 0, 9153, 1057, 4, 7, UNI_GCB__PP } /* gcb=prepend */, + { 1, 184, 6808, 2, 10, UNI_ASCII } /* isbasiclatin */, + { 0, 7025, 7495, 3, 1, UNI_IN__7 } /* in=7 */, + { 0, 9659, 1, 3, 1, -UNI_RI } /* ri=n */, + { 1, 8884, 2293, 5, 20, UNI_INSC__CONSONANTPLACEHOLDER } /* insc=consonantplaceholder */, + { 0, 3671, 2532, 17, 4, UNI_BRAH } /* scriptextensions=brah */, + { 0, 9365, 4582, 4, 15, UNI_MERC } /* scx=meroiticcursive */, + { 1, 9608, 7176, 3, 9, UNI_EA__A } /* ea=ambiguous */, + { 1, 6679, 9433, 11, 4, UNI_SD } /* softdotted=true */, + { 14, 1084, 0, 26, 0, UNI_cwkcf_values_index } /* changeswhennfkccasefolded= */, + { 8, 9629, 878, 3, 2, UNI_LB__PR } /* lb=pr */, + { 6, 1924, 7, 10, 1, UNI_CASEDLETTER } /* category=lc */, + { 13, 8886, 9349, 3, 4, UNI_SC__ROHG } /* sc=rohg */, + { 1, 1599, 0, 23, 0, UNI_COMPATJAMO } /* hangulcompatibilityjamo */, + { 4, 9093, 148, 4, 35, UNI_DIACRITICALSSUP } /* blk=combiningdiacriticalmarkssupplement */, + { 2, 9093, 7118, 4, 10, UNI_INWARANGCITI } /* blk=warangciti */, + { 1, 4705, 4733, 3, 14, UNI_TITLE } /* istitlecaseletter */, + { 0, 8640, 3, 6, 1, -UNI_XPOSIXUPPER } /* upper=f */, + { 14, 1362, 7683, 24, 2, UNI_CCC__26 } /* canonicalcombiningclass=26 */, + { 16, 9093, 2760, 4, 19, UNI_MODIFIERTONELETTERS } /* blk=modifiertoneletters */, + { 1, 1977, 26, 22, 1, UNI__PERL_NCHAR } /* noncharactercodepoint=y */, + { 1, 8233, 2127, 7, 4, UNI_SC__HAN } /* script=hani */, + { 0, 3671, 9209, 17, 4, UNI_KTHI } /* scriptextensions=kthi */, + { 1, 184, 5526, 2, 13, UNI_GREEKEXT } /* isgreekextended */, + { 1, 4267, 0, 5, 0, UNI_BAMU } /* bamum */, + { 7, 3688, 8864, 17, 5, -UNI_STERM } /* sentenceterminal=false */, + { 1, 9093, 659, 4, 30, UNI_CJKEXTF } /* blk=cjkunifiedideographsextensionf */, + { 0, 9093, 4076, 4, 16, UNI_MISCMATHSYMBOLSA } /* blk=miscmathsymbolsa */, + { 0, 1362, 6481, 24, 11, UNI_CCC__8 } /* canonicalcombiningclass=kanavoicing */, + { 0, 8233, 1622, 7, 5, UNI_SC__LATN } /* script=latin */, + { 2, 9647, 7462, 3, 1, UNI_NV__4 } /* nv=4 */, + { 7, 3671, 7365, 17, 9, UNI_PAUC } /* scriptextensions=paucinhau */, + { 0, 9153, 3254, 4, 17, UNI_RI } /* gcb=regionalindicator */, + { 1, 6828, 3074, 10, 18, UNI_BC__FSI } /* bidiclass=firststrongisolate */, + { 3, 3671, 9489, 17, 4, UNI_ZYYY } /* scriptextensions=zyyy */, + { 0, 8886, 9297, 3, 4, UNI_OLCK } /* sc=olck */, + { 20, 4705, 1257, 4, 2, UNI_TELU } /* istelu */, + { 2, 9113, 6404, 4, 11, UNI_CCC__DB } /* ccc=doublebelow */, + { 0, 1159, 495, 3, 2, UNI_NT__NU } /* nt=nu */, + { 0, 9629, 9753, 3, 2, UNI_LB__B2 } /* lb=b2 */, + { 0, 8886, 9489, 3, 4, UNI_SC__ZYYY } /* sc=zyyy */, + { 0, 9125, 26, 4, 1, UNI_CWT } /* cwt=y */, + { 1, 8871, 34, 3, 6, UNI_SB__EX } /* sb=extend */, + { 1, 9605, 1223, 3, 7, UNI_DT__INIT } /* dt=initial */, + { 0, 8424, 3722, 6, 17, UNI_SUTTONSIGNWRITING } /* block=suttonsignwriting */, + { 5, 9365, 9085, 4, 4, UNI_BATK } /* scx=batk */, + { 0, 8879, 6734, 5, 11, UNI_INPC__TOPANDRIGHT } /* inpc=topandright */, + { 0, 21, 8532, 2, 6, UNI_KANBUN } /* inkanbun */, + { 0, 9365, 7956, 4, 4, UNI_TAGB } /* scx=tagb */, + { 4, 3671, 8248, 18, 6, UNI_SHAW } /* scriptextensions=shavian */, + { 17, 6816, 7797, 3, 7, UNI_INBASSAVAH } /* inbassavah */, + { 2, 9405, 0, 4, 0, UNI_TALU } /* talu */, + { 0, 8424, 779, 6, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsupplement */, + { 2, 6767, 0, 11, 0, UNI_YISYLLABLES } /* yisyllables */, + { 0, 7018, 7631, 10, 1, UNI_IN__9 } /* presentin=9 */, + { 0, 7128, 1188, 10, 2, UNI_WB__KA } /* wordbreak=ka */, + { 0, 8508, 36, 6, 1, UNI_GREXT } /* grext=t */, + { 0, 9593, 9638, 3, 3, UNI_BC__LRO } /* bc=lro */, + { 0, 184, 8538, 2, 6, UNI_KHOJ } /* iskhojki */, + { 0, 8424, 8226, 6, 7, UNI_INPHAGSPA } /* block=phagspa */, + { 0, 8128, 0, 4, 0, UNI_MAKA } /* maka */, + { 7, 8879, 6280, 3, 11, UNI_PLAYINGCARDS } /* inplayingcards */, + { 0, 8424, 3620, 6, 10, UNI_INMANICHAEAN } /* block=manichaean */, + { 0, 1497, 2006, 9, 14, UNI_LM } /* category=modifierletter */, + { 1, 3671, 7338, 17, 9, UNI_PERM } /* scriptextensions=oldpermic */, + { 0, 9629, 6848, 3, 10, UNI_LB__BA } /* lb=breakafter */, + { 1, 9365, 7796, 4, 8, UNI_BASS } /* scx=bassavah */, + { 1, 5760, 7507, 13, 2, UNI_NV__12 } /* numericvalue=12 */, + { 0, 184, 382, 2, 32, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* isegyptianhieroglyphformatcontrols */, + { 0, 3248, 3, 6, 1, -UNI_XPOSIXSPACE } /* space=f */, + { 28, 9731, 7410, 3, 9, UNI_WB__WSEGSPACE } /* wb=wsegspace */, + { 2, 9093, 9261, 4, 3, UNI_INMRO } /* blk=mro */, + { 1, 9049, 7660, 4, 3, UNI_AGE__6 } /* age=6.0 */, + { 1, 9904, 1768, 5, 5, UNI_POSIXLOWER } /* posixlower */, + { 1, 9141, 9433, 4, 4, UNI_DIA } /* dia=true */, + { 2, 8886, 9473, 3, 4, UNI_SC__YI } /* sc=yiii */, + { 0, 8233, 8924, 7, 5, UNI_SC__ORYA } /* script=oriya */, + { 26, 5085, 5619, 4, 7, UNI_INMALAYALAM } /* inmalayalam */, + { 5, 8233, 5311, 7, 14, UNI_SC__PHLP } /* script=psalterpahlavi */, + { 24, 5565, 5115, 13, 14, UNI_JG__MANICHAEANHETH } /* joininggroup=manichaeanheth */, + { 6, 9365, 9209, 4, 4, UNI_KTHI } /* scx=kthi */, + { 51, 2493, 3391, 20, 7, UNI_VO__U } /* verticalorientation=upright */, + { 2, 21, 5003, 2, 14, UNI_LATINEXTB } /* inlatinextendedb */, + { 5, 9093, 7860, 4, 8, UNI_INHIRAGANA } /* blk=hiragana */, + { 2, 9901, 9470, 3, 3, UNI_XSUX } /* isxsux */, + { 18, 8233, 2837, 8, 3, UNI_SUND } /* script=sund */, + { 18, 8886, 7852, 3, 8, UNI_SC__GURU } /* sc=gurmukhi */, + { 3, 3671, 2333, 17, 10, UNI_GLAG } /* scriptextensions=glagolitic */, + { 3, 4462, 26, 15, 1, UNI_GREXT } /* graphemeextend=y */, + { 3, 9623, 5129, 3, 14, UNI_JG__MANICHAEANKAPH } /* jg=manichaeankaph */, + { 14, 5085, 8138, 5, 4, UNI_INMANDAIC } /* inmandaic */, + { 1, 8424, 3326, 6, 11, UNI_TAIXUANJING } /* block=taixuanjing */, + { 6, 9623, 8658, 3, 6, UNI_JG__YUDHHE } /* jg=yudhhe */, + { 1, 8226, 0, 7, 0, UNI_PHAG } /* phagspa */, + { 0, 8424, 8538, 6, 6, UNI_INKHOJKI } /* block=khojki */, + { 1, 9365, 8128, 4, 4, UNI_MAKA } /* scx=maka */, + { 0, 9647, 8989, 3, 4, UNI_NV__1_SLASH_80 } /* nv=1/80 */, + { 0, 8424, 8859, 6, 5, UNI_INDOGRA } /* block=dogra */, + { 2, 3868, 8499, 16, 2, UNI_CF } /* generalcategory=cf */, + { 0, 8424, 5604, 6, 13, UNI_LOWSURROGATES } /* block=lowsurrogates */, + { 1, 7018, 9449, 10, 4, UNI_IN__12_DOT_1 } /* presentin=v121 */, + { 3, 3671, 4792, 17, 15, UNI_ZANB } /* scriptextensions=zanabazarsquare */, + { 0, 8424, 8254, 6, 7, UNI_INSIDDHAM } /* block=siddham */, + { 33, 9093, 6868, 4, 10, UNI_COMPATJAMO } /* blk=compatjamo */, + { 9, 1506, 0, 24, 0, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* supsymbolsandpictographs */, + { 16, 3739, 0, 17, 0, UNI_uideo_values_index } /* unifiedideograph= */, + { 1, 5835, 26, 12, 1, UNI_BIDIC } /* bidicontrol=y */, + { 2, 8424, 283, 6, 33, UNI_MISCMATHSYMBOLSB } /* block=miscellaneousmathematicalsymbolsb */, + { 1, 1362, 8437, 25, 5, UNI_CCC__103 } /* canonicalcombiningclass=ccc103 */, + { 0, 9903, 96, 6, 5, UNI_XPOSIXALPHA } /* xposixalpha */, + { 0, 3243, 995, 11, 2, -UNI_XPOSIXSPACE } /* whitespace=no */, + { 1, 9093, 569, 4, 30, UNI_CJKEXTC } /* blk=cjkunifiedideographsextensionc */, + { 0, 3671, 7980, 17, 4, UNI_UGAR } /* scriptextensions=ugar */, + { 256, 9093, 567, 4, 2, UNI_NB } /* blk=nb */, + { 24, 9093, 749, 4, 30, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* blk=symbolsandpictographsextendeda */, + { 1, 9365, 9493, 4, 4, UNI_ZZZZ } /* scx=zzzz */, + { 0, 2253, 0, 20, 0, UNI_HLUW } /* anatolianhieroglyphs */, + { 0, 184, 3164, 2, 18, UNI_LATINEXTADDITIONAL } /* islatinextadditional */, + { 1, 21, 5423, 3, 12, UNI_AEGEANNUMBERS } /* inaegeannumbers */, + { 0, 8424, 4108, 6, 7, UNI_INMYANMAR } /* block=myanmar */, + { 0, 6858, 0, 10, 0, UNI_CJKSTROKES } /* cjkstrokes */, + { 2, 8955, 3, 4, 1, -UNI_IDC } /* idc=f */, + { 1, 7025, 9551, 3, 3, UNI_IN__3_DOT_2 } /* in=3.2 */, + { 1, 9647, 7747, 3, 2, UNI_NV__28 } /* nv=28 */, + { 0, 1362, 6207, 24, 12, UNI_CCC__0 } /* canonicalcombiningclass=notreordered */, + { 3, 8233, 3772, 7, 8, UNI_SC__BOPO } /* script=bopomofo */, + { 0, 9365, 9201, 4, 4, UNI_KHMR } /* scx=khmr */, + { 1, 9113, 8780, 5, 4, UNI_CCC__27 } /* ccc=ccc27 */, + { 3, 7964, 0, 8, 0, UNI_TFNG } /* tifinagh */, + { 0, 3128, 0, 18, 0, UNI_idsb_values_index } /* idsbinaryoperator= */, + { 0, 9620, 6635, 3, 11, UNI_SO } /* gc=othersymbol */, + { 1, 4618, 2335, 4, 11, UNI_GLAGOLITICSUP } /* inglagoliticsup */, + { 0, 9317, 0, 4, 0, UNI_PHLP } /* phlp */, + { 0, 5979, 9433, 12, 4, UNI_IDEO } /* ideographic=true */, + { 43, 9153, 9611, 4, 3, UNI_WB__EB } /* gcb=ebg */, + { 2, 184, 7900, 2, 8, UNI_KANAEXTA } /* iskanaexta */, + { 0, 3002, 2493, 18, 4, UNI_DT__VERT } /* decompositiontype=vert */, + { 2, 184, 9277, 2, 4, UNI_NBAT } /* isnbat */, + { 2, 1801, 0, 22, 0, UNI_cwu_values_index } /* changeswhenuppercased= */, + { 0, 1933, 9734, 22, 3, UNI_LOE } /* logicalorderexception=yes */, + { 15, 6382, 0, 6, 0, UNI_DOMINO } /* domino */, + { 0, 5760, 7756, 13, 8, UNI_NV__7_SLASH_8 } /* numericvalue=8.75e-01 */, + { 2, 9946, 6554, 3, 3, UNI_SAMR } /* issamr */, + { 0, 9593, 37, 3, 2, UNI_BC__EN } /* bc=en */, + { 1, 8233, 8093, 7, 7, UNI_SC__HANO } /* script=hanunoo */, + { 0, 6949, 724, 4, 3, UNI_CASED } /* iscased */, + { 4, 9629, 21, 3, 2, UNI_LB__IN } /* lb=in */, + { 11, 8424, 183, 6, 20, UNI_MISCSYMBOLS } /* block=miscellaneoussymbols */, + { 3, 9093, 719, 4, 21, UNI_ENCLOSEDALPHANUM } /* blk=enclosedalphanumerics */, + { 4, 9647, 7492, 3, 8, UNI_NV__1_SLASH_6 } /* nv=1.67e-01 */, + { 3, 9093, 3722, 4, 17, UNI_SUTTONSIGNWRITING } /* blk=suttonsignwriting */, + { 80, 9069, 0, 4, 0, UNI_ARMN } /* armn */, + { 0, 9093, 5895, 4, 12, UNI_CYRILLICEXTC } /* blk=cyrillicextc */, + { 0, 1362, 8790, 25, 4, UNI_CCC__29 } /* canonicalcombiningclass=ccc29 */, + { 1, 1977, 0, 21, 0, UNI__PERL_NCHAR } /* noncharactercodepoint */, + { 0, 5565, 5241, 13, 14, UNI_JG__NOJOININGGROUP } /* joininggroup=nojoininggroup */, + { 4, 184, 749, 2, 30, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* issymbolsandpictographsextendeda */, + { 0, 1362, 8720, 25, 4, UNI_CCC__15 } /* canonicalcombiningclass=ccc15 */, + { 0, 5513, 9433, 13, 4, UNI_GRBASE } /* graphemebase=true */, + { 113, 184, 9261, 2, 3, UNI_MRO } /* ismro */, + { 1, 4252, 0, 15, 0, UNI_ARABICEXTA } /* arabicextendeda */, + { 1, 4826, 8864, 9, 5, -UNI_XPOSIXXDIGIT } /* hexdigit=false */, + { 0, 9093, 7221, 4, 9, UNI_EMOTICONS } /* blk=emoticons */, + { 4, 5565, 5, 13, 1, UNI_JG__E } /* joininggroup=e */, + { 2, 1497, 17, 10, 1, UNI_SO } /* category=so */, + { 0, 9593, 3608, 3, 3, UNI_BC__RLI } /* bc=rli */, + { 3, 3671, 8121, 17, 7, UNI_LINA } /* scriptextensions=lineara */, + { 0, 2684, 9, 19, 2, UNI_HST__NA } /* hangulsyllabletype=na */, + { 0, 8424, 4717, 6, 15, UNI_TAMILSUP } /* block=tamilsupplement */, + { 8, 1362, 3969, 24, 1, UNI_CCC__1 } /* canonicalcombiningclass=1 */, + { 9, 8886, 2532, 3, 4, UNI_BRAH } /* sc=brah */, + { 1, 32, 0, 2, 0, UNI__PERL_SURROGATE } /* cs */, + { 0, 8424, 1645, 6, 23, UNI_SHORTHANDFORMATCONTROLS } /* block=shorthandformatcontrols */, + { 8, 8160, 781, 4, 27, UNI_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsupplement */, + { 2, 8886, 9393, 3, 4, UNI_SC__SYRC } /* sc=syrc */, + { 10, 1924, 24, 10, 1, UNI_LOWERCASELETTER } /* category=ll */, + { 0, 9647, 3969, 3, 1, UNI_NV__1 } /* nv=1 */, + { 0, 9093, 3326, 4, 18, UNI_TAIXUANJING } /* blk=taixuanjingsymbols */, + { 0, 8424, 1867, 6, 12, UNI_DIACRITICALS } /* block=diacriticals */, + { 8, 184, 8149, 2, 7, UNI_MULT } /* ismultani */, + { 0, 9620, 5199, 3, 14, UNI_SK } /* gc=modifiersymbol */, + { 24, 2703, 9433, 19, 4, UNI_IDST } /* idstrinaryoperator=true */, + { 1, 8886, 4792, 3, 15, UNI_ZANB } /* sc=zanabazarsquare */, + { 0, 2106, 5258, 21, 11, UNI_GCB__SM } /* graphemeclusterbreak=spacingmark */, + { 4, 5760, 8394, 13, 6, UNI_NV__800000 } /* numericvalue=800000 */, + { 14, 1497, 697, 9, 2, UNI_MN } /* category=mn */, + { 0, 6918, 3, 11, 1, UNI_LB__LF } /* linebreak=lf */, + { 8, 7128, 400, 10, 6, UNI_WB__FO } /* wordbreak=format */, + { 0, 8886, 8142, 3, 7, UNI_MARC } /* sc=marchen */, + { 0, 8424, 1387, 7, 9, UNI_CJKSYMBOLS } /* block=cjksymbols */, + { 16, 9093, 4092, 4, 16, UNI_MISCMATHSYMBOLSB } /* blk=miscmathsymbolsb */, + { 0, 7108, 36, 10, 1, UNI_XPOSIXUPPER } /* uppercase=t */, + { 0, 6567, 187, 6, 16, UNI_MISCSYMBOLS } /* inmiscellaneoussymbols */, + { 0, 5565, 5708, 13, 13, UNI_JG__MANICHAEANWAW } /* joininggroup=manichaeanwaw */, + { 3, 6918, 495, 10, 7, UNI_LB__NU } /* linebreak=numeric */, + { 4, 6808, 0, 10, 0, UNI_ASCII } /* basiclatin */, + { 3, 6338, 9433, 11, 4, UNI_XPOSIXALPHA } /* alphabetic=true */, + { 0, 184, 7812, 2, 4, UNI_DUPL } /* isdupl */, + { 24, 9647, 7676, 3, 8, UNI_NV__1_SLASH_16 } /* nv=6.25e-02 */, + { 0, 9137, 8864, 4, 5, -UNI_DEP } /* dep=false */, + { 1, 8424, 1539, 6, 14, UNI_MUSIC } /* block=musicalsymbols */, + { 40, 5526, 0, 8, 0, UNI_GREEKEXT } /* greekext */, + { 0, 8424, 8485, 7, 5, UNI_INCHAKMA } /* block=chakma */, + { 49, 8640, 0, 6, 0, UNI_upper_values_index } /* upper= */, + { 2, 2021, 0, 22, 0, UNI_TRANSPORTANDMAP } /* transportandmapsymbols */, + { 0, 3002, 1223, 18, 4, UNI_DT__INIT } /* decompositiontype=init */, + { 5, 184, 4762, 2, 15, UNI_VEDICEXT } /* isvedicextensions */, + { 2, 9647, 7764, 3, 8, UNI_NV__11_SLASH_12 } /* nv=9.17e-01 */, + { 13, 8886, 9357, 3, 4, UNI_SAMR } /* sc=samr */, + { 0, 8233, 7365, 7, 9, UNI_PAUC } /* script=paucinhau */, + { 0, 3671, 7, 17, 18, UNI_CANS } /* scriptextensions=canadianaboriginal */, + { 0, 9093, 7805, 5, 7, UNI_INBUGINESE } /* blk=buginese */, + { 1, 4627, 0, 16, 0, UNI_NFKCQC__N } /* nfkcquickcheck=n */, + { 9, 9647, 9751, 3, 2, UNI_NV__49 } /* nv=49 */, + { 1, 9237, 995, 4, 2, -UNI_LOE } /* loe=no */, + { 1, 4705, 9422, 3, 3, UNI_TGLG } /* istglg */, + { 1, 9365, 7341, 4, 4, UNI_PERM } /* scx=perm */, + { 12, 6928, 995, 10, 2, -UNI_XPOSIXLOWER } /* lowercase=no */, + { 1, 7018, 9713, 10, 3, UNI_IN__6_DOT_3 } /* presentin=v63 */, + { 2, 8233, 9261, 7, 4, UNI_MRO } /* script=mroo */, + { 0, 9647, 7763, 3, 2, UNI_NV__19 } /* nv=19 */, + { 1, 9629, 495, 3, 7, UNI_LB__NU } /* lb=numeric */, + { 0, 184, 4989, 2, 14, UNI_KANGXI } /* iskangxiradicals */, + { 1, 9093, 878, 4, 14, UNI_PUA } /* blk=privateusearea */, + { 5, 6918, 73, 10, 2, UNI_LB__EM } /* linebreak=em */, + { 1, 8412, 8864, 6, 5, -UNI_BIDIC } /* bidic=false */, + { 25, 8233, 8550, 7, 6, UNI_LEPC } /* script=lepcha */, + { 16, 3671, 9465, 17, 4, UNI_XPEO } /* scriptextensions=xpeo */, + { 2, 8332, 97, 3, 4, UNI_XPOSIXALPHA } /* isalpha */, + { 55, 3671, 9321, 17, 4, UNI_PHNX } /* scriptextensions=phnx */, + { 0, 9093, 2006, 4, 4, UNI_INMODI } /* blk=modi */, + { 0, 5760, 7435, 13, 2, UNI_NV__11 } /* numericvalue=11 */, + { 0, 9093, 2333, 4, 13, UNI_GLAGOLITICSUP } /* blk=glagoliticsup */, + { 0, 5422, 0, 13, 0, UNI_AEGEANNUMBERS } /* aegeannumbers */, + { 0, 8332, 697, 4, 2, UNI_ARMN } /* isarmn */, + { 0, 9108, 0, 2, 0, UNI_MC } /* mc */, + { 1, 2741, 0, 19, 0, UNI_MERO } /* meroitichieroglyphs */, + { 2, 9593, 0, 4, 0, UNI_BC__B } /* bc=b */, + { 0, 8233, 2484, 7, 4, UNI_SC__MAND } /* script=mand */, + { 3, 8886, 7980, 3, 8, UNI_UGAR } /* sc=ugaritic */, + { 1, 8424, 5734, 6, 13, UNI_MISCTECHNICAL } /* block=misctechnical */, + { 0, 184, 7916, 2, 8, UNI_MAHJ } /* ismahajani */, + { 2, 9365, 9145, 4, 4, UNI_DSRT } /* scx=dsrt */, + { 0, 21, 1622, 2, 14, UNI_LATINEXTA } /* inlatinextendeda */, + { 4, 5967, 0, 6, 0, UNI_HEBR } /* hebrew */, + { 1, 9093, 3416, 4, 10, UNI_ALCHEMICAL } /* blk=alchemical */, + { 1, 3671, 9157, 17, 4, UNI_GONG } /* scriptextensions=gong */, + { 2, 7788, 0, 8, 0, UNI_BALI } /* balinese */, + { 1, 9629, 8100, 3, 6, UNI_LB__HY } /* lb=hyphen */, + { 16, 9353, 0, 4, 0, UNI_RUNR } /* runr */, + { 4, 3671, 9390, 18, 3, UNI_SOGO } /* scriptextensions=sogo */, + { 0, 2085, 0, 21, 0, UNI_CYRILLICSUP } /* cyrillicsupplementary */, + { 1, 9237, 1, 4, 1, -UNI_LOE } /* loe=n */, + { 6, 8424, 1530, 6, 14, UNI_BYZANTINEMUSIC } /* block=byzantinemusic */, + { 0, 4580, 2780, 3, 18, UNI_MONGOLIANSUP } /* inmongoliansupplement */, + { 20, 4220, 0, 6, 0, UNI_TANG } /* tangut */, + { 0, 4580, 989, 3, 4, UNI_MUSIC } /* inmusic */, + { 0, 3671, 2148, 17, 21, UNI_PRTI } /* scriptextensions=inscriptionalparthian */, + { 9, 9623, 5666, 3, 3, UNI_JG__NUN } /* jg=nun */, + { 0, 8424, 7956, 6, 8, UNI_INTAGBANWA } /* block=tagbanwa */, + { 0, 9620, 6624, 3, 11, UNI_NO } /* gc=othernumber */, + { 0, 8424, 7916, 6, 8, UNI_INMAHAJANI } /* block=mahajani */, + { 0, 1136, 9734, 26, 3, UNI_DI } /* defaultignorablecodepoint=yes */, + { 0, 3884, 0, 16, 0, UNI_GEORGIANEXT } /* georgianextended */, + { 0, 8598, 3, 6, 1, -UNI__PERL_PATWS } /* patws=f */, + { 1, 9093, 3884, 4, 16, UNI_GEORGIANEXT } /* blk=georgianextended */, + { 0, 9093, 4268, 5, 4, UNI_INBAMUM } /* blk=bamum */, + { 0, 7338, 0, 9, 0, UNI_PERM } /* oldpermic */, + { 13, 8508, 9734, 6, 3, UNI_GREXT } /* grext=yes */, + { 97, 1497, 38, 9, 2, UNI_XPOSIXDIGIT } /* category=nd */, + { 9, 9647, 7692, 3, 8, UNI_NV__13_SLASH_2 } /* nv=6.50e+00 */, + { 21, 3671, 2532, 17, 6, UNI_BRAH } /* scriptextensions=brahmi */, + { 12, 6371, 9433, 11, 4, UNI_DEP } /* deprecated=true */, + { 0, 4821, 36, 14, 1, UNI_POSIXXDIGIT } /* asciihexdigit=t */, + { 1, 2874, 0, 19, 0, UNI_SUPARROWSB } /* supplementalarrowsb */, + { 8, 9365, 7347, 4, 9, UNI_ORKH } /* scx=oldturkic */, + { 0, 689, 0, 16, 0, UNI_CUNEIFORMNUMBERS } /* cuneiformnumbers */, + { 1, 6828, 4156, 10, 16, UNI_BC__S } /* bidiclass=segmentseparator */, + { 0, 1036, 0, 2, 0, UNI_CASEDLETTER } /* lc */, + { 1, 9113, 8785, 5, 4, UNI_CCC__28 } /* ccc=ccc28 */, + { 0, 3671, 78, 17, 6, UNI_ARAB } /* scriptextensions=arabic */, + { 0, 9647, 5409, 3, 4, UNI_NV__1000 } /* nv=1000 */, + { 1, 5760, 7732, 13, 8, UNI_NV__5_SLASH_6 } /* numericvalue=8.33e-01 */, + { 1, 2646, 0, 10, 0, UNI_JAMO } /* hanguljamo */, + { 20, 8233, 7248, 7, 9, UNI_SC__SIND } /* script=khudawadi */, + { 1, 1757, 3, 22, 1, -UNI_CWL } /* changeswhenlowercased=f */, + { 5, 3671, 9386, 18, 3, UNI_SHRD } /* scriptextensions=shrd */, + { 0, 9731, 73, 3, 2, UNI_WB__EB } /* wb=em */, + { 0, 184, 8128, 2, 7, UNI_MAKA } /* ismakasar */, + { 0, 9647, 7446, 3, 2, UNI_NV__25 } /* nv=25 */, + { 0, 1536, 2609, 3, 18, UNI_INEGYPTIANHIEROGLYPHS } /* inegyptianhieroglyphs */, + { 0, 9093, 7194, 4, 9, UNI_ARABICPFB } /* blk=arabicpfb */, + { 0, 8884, 2313, 5, 20, UNI_INSC__CONSONANTWITHSTACKER } /* insc=consonantwithstacker */, + { 2, 8233, 8226, 7, 7, UNI_SC__PHAG } /* script=phagspa */, + { 14, 9623, 6111, 3, 12, UNI_JG__MALAYALAMNYA } /* jg=malayalamnya */, + { 25, 9365, 9325, 4, 4, UNI_MIAO } /* scx=plrd */, + { 0, 4432, 0, 15, 0, UNI_DIACRITICALSSUP } /* diacriticalssup */, + { 1, 21, 7266, 2, 9, UNI_LATINEXTC } /* inlatinextc */, + { 131, 184, 995, 2, 2, UNI_NO } /* isno */, + { 0, 9647, 8973, 3, 4, UNI_NV__1_SLASH_10 } /* nv=1/10 */, + { 0, 4627, 0, 15, 0, UNI_nfkcqc_values_index } /* nfkcquickcheck= */, + { 0, 6816, 7204, 3, 8, UNI_INBHAIKSUKI } /* inbhaiksuki */, + { 0, 8233, 2930, 7, 4, UNI_CHER } /* script=cher */, + { 0, 3868, 1257, 16, 2, UNI_UPPERCASELETTER } /* generalcategory=lu */, + { 21, 117, 5553, 3, 5, UNI_IPAEXT } /* inipaext */, + { 4, 184, 9767, 2, 2, UNI_CASEDLETTER } /* isl& */, + { 1, 9626, 6470, 3, 11, UNI_JT__C } /* jt=joincausing */, + { 3, 6868, 0, 10, 0, UNI_COMPATJAMO } /* compatjamo */, + { 3, 1362, 8820, 25, 4, UNI_CCC__35 } /* canonicalcombiningclass=ccc35 */, + { 5, 9157, 0, 4, 0, UNI_GONG } /* gong */, + { 0, 7230, 9433, 9, 4, UNI_EXT } /* extender=true */, + { 0, 8959, 1, 5, 1, -UNI_XIDS } /* xids=n */, + { 0, 8884, 1434, 5, 24, UNI_INSC__CONSONANTSUCCEEDINGREPHA } /* insc=consonantsucceedingrepha */, + { 3, 1773, 0, 6, 0, UNI_cased_values_index } /* cased= */, + { 0, 8424, 2646, 6, 10, UNI_JAMO } /* block=hanguljamo */, + { 1, 9365, 4717, 4, 5, UNI_TAML } /* scx=tamil */, + { 8, 1362, 8725, 25, 4, UNI_CCC__16 } /* canonicalcombiningclass=ccc16 */, + { 2, 9620, 8839, 3, 5, UNI_XPOSIXCNTRL } /* gc=cntrl */, + { 0, 8617, 3, 5, 1, -UNI_TERM } /* term=f */, + { 26, 9365, 8303, 4, 7, UNI_TIBT } /* scx=tibetan */, + { 0, 8959, 9734, 5, 3, UNI_XIDS } /* xids=yes */, + { 1, 4447, 3, 15, 1, UNI_EA__F } /* eastasianwidth=f */, + { 0, 8424, 4717, 6, 5, UNI_INTAMIL } /* block=tamil */, + { 0, 5760, 9739, 13, 2, UNI_NV__39 } /* numericvalue=39 */, + { 0, 9365, 9089, 4, 4, UNI_BHKS } /* scx=bhks */, + { 21, 6003, 1, 12, 1, -UNI_JOINC } /* joincontrol=n */, + { 1, 5255, 0, 14, 0, UNI_MN } /* nonspacingmark */, + { 1, 8233, 9157, 7, 4, UNI_SC__GONG } /* script=gong */, + { 2, 2148, 2837, 3, 11, UNI_SUNDANESESUP } /* insundanesesup */, + { 9, 7018, 7463, 10, 1, UNI_IN__3 } /* presentin=3 */, + { 1, 3671, 1573, 17, 4, UNI_PHAG } /* scriptextensions=phag */, + { 11, 184, 2044, 3, 20, UNI_CJKCOMPATFORMS } /* iscjkcompatibilityforms */, + { 2, 3398, 995, 18, 2, -UNI_VS } /* variationselector=no */, + { 2, 9647, 7532, 3, 8, UNI_NV__1_SLASH_40 } /* nv=2.50e-02 */, + { 4, 3671, 3980, 17, 7, UNI_LINB } /* scriptextensions=linearb */, + { 40, 9153, 24, 4, 1, UNI_GCB__L } /* gcb=l */, + { 0, 8886, 6723, 3, 11, UNI_SC__SYLO } /* sc=sylotinagri */, + { 7, 9113, 9771, 4, 2, UNI_CCC__9 } /* ccc=vr */, + { 1, 9113, 1700, 4, 2, UNI_CCC__DB } /* ccc=db */, + { 0, 3254, 0, 18, 0, UNI_ri_values_index } /* regionalindicator= */, + { 16, 47, 0, 1, 0, UNI_M } /* m */, + { 16, 8884, 3948, 5, 16, UNI_INSC__INVISIBLESTACKER } /* insc=invisiblestacker */, + { 0, 9731, 1767, 3, 2, UNI_WB__NL } /* wb=nl */, + { 0, 9365, 2409, 4, 4, UNI_MONG } /* scx=mong */, + { 0, 5565, 4562, 13, 3, UNI_JG__SAD } /* joininggroup=sad */, + { 9, 184, 5955, 2, 12, UNI_GONG } /* isgunjalagondi */, + { 0, 5871, 0, 12, 0, UNI_CYRILLICEXTA } /* cyrillicexta */, + { 1, 1362, 7747, 24, 2, UNI_CCC__28 } /* canonicalcombiningclass=28 */, + { 33, 8303, 0, 7, 0, UNI_TIBT } /* tibetan */, + { 8, 3671, 9057, 17, 4, UNI_AHOM } /* scriptextensions=ahom */, + { 6, 184, 719, 2, 16, UNI_ENCLOSEDALPHANUM } /* isenclosedalphanum */, + { 1, 8424, 8944, 6, 5, UNI_INTAKRI } /* block=takri */, + { 3, 9909, 8839, 7, 5, UNI_POSIXCNTRL } /* isposixcntrl */, + { 1, 9365, 3110, 4, 4, UNI_GEOR } /* scx=geor */, + { 2, 18, 0, 2, 0, UNI_RI } /* ri */, + { 1, 8163, 8904, 7, 5, UNI_NFCQC__M } /* nfkcqc=maybe */, + { 8, 3002, 3308, 18, 5, UNI_DT__SML } /* decompositiontype=small */, + { 24, 7230, 26, 9, 1, UNI_EXT } /* extender=y */, + { 0, 8556, 8864, 6, 5, -UNI_XPOSIXLOWER } /* lower=false */, + { 0, 8233, 8303, 7, 7, UNI_TIBT } /* script=tibetan */, + { 5, 4705, 1791, 3, 4, UNI_TITLE } /* istitle */, + { 13, 8886, 0, 3, 0, UNI_sc_values_index } /* sc= */, + { 0, 6015, 6514, 12, 11, UNI_JT__L } /* joiningtype=leftjoining */, + { 3, 8051, 1, 7, 1, -UNI_COMPEX } /* compex=n */, + { 0, 9623, 5181, 3, 4, UNI_JG__TETH } /* jg=teth */, + { 1, 9659, 9734, 3, 3, UNI_RI } /* ri=yes */, + { 9, 4705, 2022, 3, 14, UNI_TRANSPORTANDMAP } /* istransportandmap */, + { 1, 3671, 7772, 17, 8, UNI_ARMN } /* scriptextensions=armenian */, + { 2, 4627, 47, 15, 1, UNI_NFCQC__M } /* nfkcquickcheck=m */, + { 2, 1924, 5592, 10, 12, UNI_ZL } /* category=lineseparator */, + { 6, 1362, 2920, 24, 10, UNI_CCC__AR } /* canonicalcombiningclass=aboveright */, + { 8, 6828, 3243, 10, 10, UNI_BC__WS } /* bidiclass=whitespace */, + { 1, 6828, 6255, 10, 12, UNI_BC__ON } /* bidiclass=otherneutral */, + { 33, 4778, 8318, 3, 6, UNI_UCASEXT } /* isucasext */, + { 2, 9623, 2561, 3, 9, UNI_JG__YEHBARREE } /* jg=yehbarree */, + { 0, 9365, 4267, 4, 5, UNI_BAMU } /* scx=bamum */, + { 26, 8424, 7338, 6, 9, UNI_INOLDPERMIC } /* block=oldpermic */, + { 0, 1911, 7028, 22, 10, UNI_INSC__PUREKILLER } /* indicsyllabiccategory=purekiller */, + { 0, 184, 3110, 2, 8, UNI_GEOR } /* isgeorgian */, + { 18, 3868, 9767, 16, 2, UNI_CASEDLETTER } /* generalcategory=l& */, + { 10, 2211, 0, 7, 0, UNI_SINH } /* sinhala */, + { 0, 3868, 5353, 16, 14, UNI_ZS } /* generalcategory=spaceseparator */, + { 2, 9093, 2836, 4, 9, UNI_INSUNDANESE } /* blk=sundanese */, + { 0, 8233, 8065, 7, 7, UNI_ELBA } /* script=elbasan */, + { 3, 8886, 8072, 3, 4, UNI_ELYM } /* sc=elym */, + { 0, 9623, 9381, 3, 4, UNI_JG__SHIN } /* jg=shin */, + { 1, 9049, 0, 4, 0, UNI_age_values_index } /* age= */, + { 3, 8869, 36, 5, 1, UNI_IDSB } /* idsb=t */, + { 2, 8879, 3344, 5, 18, UNI_INPC__TOPANDLEFTANDRIGHT } /* inpc=topandleftandright */, + { 6, 3951, 59, 3, 3, UNI_IDEO } /* isideo */, + { 0, 184, 8845, 3, 3, UNI_CWCF } /* iscwcf */, + { 0, 3671, 9409, 17, 4, UNI_TAML } /* scriptextensions=taml */, + { 0, 9093, 3450, 4, 17, UNI_UCAS } /* blk=canadiansyllabics */, + { 1, 8233, 8142, 7, 4, UNI_MARC } /* script=marc */, + { 1, 5565, 5087, 13, 14, UNI_JG__MANICHAEANBETH } /* joininggroup=manichaeanbeth */, + { 0, 6371, 8864, 11, 5, -UNI_DEP } /* deprecated=false */, + { 17, 9593, 9632, 3, 3, UNI_BC__LRE } /* bc=lre */, + { 26, 1757, 0, 21, 0, UNI_CWL } /* changeswhenlowercased */, + { 0, 1773, 1, 6, 1, -UNI_CASED } /* cased=n */, + { 48, 8424, 3290, 6, 18, UNI_RUMI } /* block=ruminumeralsymbols */, + { 0, 3868, 45, 16, 2, UNI_CO } /* generalcategory=co */, + { 3, 7804, 0, 4, 0, UNI_BUGI } /* bugi */, + { 0, 9731, 138, 3, 2, UNI_WB__FO } /* wb=fo */, + { 0, 9647, 9560, 3, 3, UNI_NV__4_SLASH_5 } /* nv=4/5 */, + { 3, 4204, 0, 9, 0, UNI_SYRIACSUP } /* syriacsup */, + { 139, 8886, 5311, 3, 14, UNI_SC__PHLP } /* sc=psalterpahlavi */, + { 36, 9365, 9409, 4, 4, UNI_TAML } /* scx=taml */, + { 3, 9049, 9449, 4, 4, UNI_AGE__12_DOT_1 } /* age=v121 */, + { 9, 8332, 80, 4, 8, UNI_ARABICMATH } /* isarabicmath */, + { 1, 8955, 0, 4, 0, UNI_idc_values_index } /* idc= */, + { 1, 6267, 0, 8, 0, UNI_PHAISTOS } /* phaistos */, + { 0, 1773, 8864, 6, 5, -UNI_CASED } /* cased=false */, + { 0, 8886, 6558, 3, 11, UNI_MEDF } /* sc=medefaidrin */, + { 1, 8496, 9734, 6, 3, UNI_CWKCF } /* cwkcf=yes */, + { 24, 7128, 4645, 10, 2, UNI_WB__DQ } /* wordbreak=dq */, + { 0, 8424, 7058, 6, 10, UNI_SMALLFORMS } /* block=smallforms */, + { 12, 1482, 2473, 24, 3, UNI_INPC__TOP } /* indicpositionalcategory=top */, + { 0, 9647, 5409, 3, 9, UNI_NV__100000000 } /* nv=100000000 */, + { 2, 6885, 3933, 3, 15, UNI_HIGHPUSURROGATES } /* ishighpusurrogates */, + { 3, 3671, 9493, 17, 4, UNI_ZZZZ } /* scriptextensions=zzzz */, + { 3, 8556, 1, 6, 1, -UNI_XPOSIXLOWER } /* lower=n */, + { 0, 8100, 995, 7, 2, -UNI_HYPHEN } /* hyphen=no */, + { 0, 2204, 6625, 3, 10, UNI_NO } /* isothernumber */, + { 0, 2204, 7340, 4, 7, UNI_PERM } /* isoldpermic */, + { 6, 184, 6039, 2, 12, UNI_NL } /* isletternumber */, + { 31, 5339, 8694, 14, 5, UNI_SB__AT } /* sentencebreak=aterm */, + { 0, 6828, 2433, 10, 20, UNI_BC__RLE } /* bidiclass=righttoleftembedding */, + { 0, 3243, 9433, 11, 4, UNI_XPOSIXSPACE } /* whitespace=true */, + { 16, 6918, 1767, 10, 2, UNI_LB__NL } /* linebreak=nl */, + { 10, 117, 3588, 4, 15, UNI_INDICSIYAQNUMBERS } /* inindicsiyaqnumbers */, + { 1, 1362, 8909, 24, 5, UNI_CCC__7 } /* canonicalcombiningclass=nukta */, + { 21, 8424, 1824, 7, 18, UNI_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatideographs */, + { 0, 9049, 9548, 4, 3, UNI_AGE__3 } /* age=3.0 */, + { 2, 8496, 9433, 6, 4, UNI_CWKCF } /* cwkcf=true */, + { 0, 9093, 7956, 4, 8, UNI_INTAGBANWA } /* blk=tagbanwa */, + { 28, 1812, 0, 5, 0, UNI_XPOSIXUPPER } /* upper */, + { 1, 2204, 4674, 4, 13, UNI_SARB } /* isoldsoutharabian */, + { 16, 8233, 8610, 7, 6, UNI_RJNG } /* script=rejang */, + { 0, 8424, 6859, 7, 9, UNI_CJKSTROKES } /* block=cjkstrokes */, + { 35, 4580, 0, 17, 0, UNI_INMEROITICCURSIVE } /* inmeroiticcursive */, + { 5, 9593, 102, 3, 2, UNI_BC__ET } /* bc=et */, + { 0, 7420, 3, 8, 1, -UNI_IDS } /* idstart=f */, + { 1, 8884, 4702, 5, 15, UNI_INSC__REGISTERSHIFTER } /* insc=registershifter */, + { 0, 9647, 9572, 3, 3, UNI_NV__5_SLASH_8 } /* nv=5/8 */, + { 65, 8886, 8484, 3, 6, UNI_SC__CAKM } /* sc=chakma */, + { 0, 7018, 9704, 10, 3, UNI_IN__6 } /* presentin=v60 */, + { 7, 8424, 2086, 7, 17, UNI_CYRILLICSUP } /* block=cyrillicsupplement */, + { 1, 6371, 0, 11, 0, UNI_dep_values_index } /* deprecated= */, + { 1, 9365, 9301, 4, 4, UNI_ORKH } /* scx=orkh */, + { 5, 1530, 0, 23, 0, UNI_BYZANTINEMUSIC } /* byzantinemusicalsymbols */, + { 0, 9946, 9394, 3, 3, UNI_SYRC } /* issyrc */, + { 0, 9647, 8388, 3, 3, UNI_NV__700 } /* nv=700 */, + { 5, 184, 4267, 2, 15, UNI_BAMUMSUP } /* isbamumsupplement */, + { 4, 9113, 8740, 5, 4, UNI_CCC__19 } /* ccc=ccc19 */, + { 3, 3736, 7846, 4, 6, UNI_INGUJARATI } /* ingujarati */, + { 0, 9901, 5492, 8, 5, UNI_XPOSIXALNUM } /* isxposixalnum */, + { 0, 9647, 7539, 3, 2, UNI_NV__22 } /* nv=22 */, + { 0, 184, 2484, 2, 4, UNI_MAND } /* ismand */, + { 0, 3002, 8490, 18, 6, UNI_DT__ENC } /* decompositiontype=circle */, + { 0, 5565, 6120, 13, 3, UNI_JG__NYA } /* joininggroup=nya */, + { 2, 9365, 8709, 4, 5, UNI_BUHD } /* scx=buhid */, + { 1, 9113, 8815, 5, 4, UNI_CCC__34 } /* ccc=ccc34 */, + { 2, 8424, 2211, 6, 21, UNI_SINHALAARCHAICNUMBERS } /* block=sinhalaarchaicnumbers */, + { 1, 8886, 4582, 3, 15, UNI_MERC } /* sc=meroiticcursive */, + { 4, 184, 921, 2, 28, UNI_VSSUP } /* isvariationselectorssupplement */, + { 26, 1362, 8805, 25, 4, UNI_CCC__32 } /* canonicalcombiningclass=ccc32 */, + { 4, 184, 6690, 2, 11, UNI_SORA } /* issorasompeng */, + { 18, 8520, 8864, 6, 5, -UNI_JOINC } /* joinc=false */, + { 0, 7018, 8993, 10, 4, UNI_IN__10 } /* presentin=10.0 */, + { 1, 8886, 7365, 3, 9, UNI_PAUC } /* sc=paucinhau */, + { 40, 6768, 6768, 3, 10, UNI_YISYLLABLES } /* isyisyllables */, + { 0, 6315, 1, 12, 1, -UNI_XIDC } /* xidcontinue=n */, + { 37, 1158, 3327, 3, 17, UNI_TAIXUANJING } /* intaixuanjingsymbols */, + { 34, 184, 8568, 2, 6, UNI_LYDI } /* islydian */, + { 1, 9629, 58, 3, 2, UNI_LB__ID } /* lb=id */, + { 13, 57, 0, 2, 0, UNI_YI } /* yi */, + { 1, 8849, 26, 5, 1, UNI_CWCM } /* cwcm=y */, + { 3, 9647, 7580, 3, 8, UNI_NV__7_SLASH_2 } /* nv=3.50e+00 */, + { 1, 184, 5860, 3, 11, UNI_CHESSSYMBOLS } /* ischesssymbols */, + { 0, 8424, 2957, 6, 9, UNI_HALFMARKS } /* block=halfmarks */, + { 1, 1362, 8467, 25, 4, UNI_CCC__13 } /* canonicalcombiningclass=ccc13 */, + { 5, 8884, 4919, 5, 14, UNI_INSC__GEMINATIONMARK } /* insc=geminationmark */, + { 178, 1450, 3662, 4, 5, UNI_INGRANTHA } /* ingrantha */, + { 1, 8233, 7852, 7, 8, UNI_SC__GURU } /* script=gurmukhi */, + { 0, 8163, 9734, 7, 3, UNI_NFKCQC__Y } /* nfkcqc=yes */, + { 3, 8233, 3729, 8, 10, UNI_SGNW } /* script=signwriting */, + { 2, 8886, 8502, 3, 6, UNI_GOTH } /* sc=gothic */, + { 0, 1239, 0, 25, 0, UNI_compex_values_index } /* fullcompositionexclusion= */, + { 0, 184, 1141, 2, 2, UNI_TITLE } /* islt */, + { 17, 3951, 3129, 3, 3, UNI_IDSB } /* isidsb */, + { 16, 8635, 1, 5, 1, -UNI_IDEO } /* ideo=n */, + { 0, 4447, 8, 15, 1, UNI_EA__A } /* eastasianwidth=a */, + { 1, 9230, 5450, 4, 11, UNI_BLOCKELEMENTS } /* inblockelements */, + { 0, 8338, 0, 7, 0, UNI_wspace_values_index } /* wspace= */, + { 21, 1911, 4140, 22, 5, UNI_INSC__OTHER } /* indicsyllabiccategory=other */, + { 1, 1362, 8830, 25, 4, UNI_CCC__84 } /* canonicalcombiningclass=ccc84 */, + { 82, 8886, 8944, 3, 4, UNI_SC__TAKR } /* sc=takr */, + { 8, 9659, 9433, 3, 4, UNI_RI } /* ri=true */, + { 0, 8886, 4204, 3, 6, UNI_SC__SYRC } /* sc=syriac */, + { 4, 1539, 0, 14, 0, UNI_MUSIC } /* musicalsymbols */, + { 1, 8844, 995, 5, 2, -UNI_CWCF } /* cwcf=no */, + { 0, 978, 0, 2, 0, UNI_CI } /* ci */, + { 2, 6918, 23, 10, 2, UNI_LB__AL } /* linebreak=al */, + { 0, 8949, 0, 5, 0, UNI_VSSUP } /* vssup */, + { 0, 3671, 3620, 17, 10, UNI_MANI } /* scriptextensions=manichaean */, + { 4, 9113, 726, 4, 2, UNI_CCC__DA } /* ccc=da */, + { 0, 921, 0, 17, 0, UNI_VS } /* variationselector */, + { 2, 9365, 6027, 4, 5, UNI_KHMR } /* scx=khmer */, + { 1, 9647, 5409, 3, 13, UNI_NV__1000000000000 } /* nv=1000000000000 */, + { 1, 8233, 9257, 7, 4, UNI_SC__MLYM } /* script=mlym */, + { 0, 9113, 9515, 4, 3, UNI_CCC__214 } /* ccc=214 */, + { 9, 184, 7796, 2, 8, UNI_BASS } /* isbassavah */, + { 0, 8233, 7049, 8, 3, UNI_SAUR } /* script=saur */, + { 3, 0, 0, 34, 0, UNI_UCAS } /* unifiedcanadianaboriginalsyllabics */, + { 0, 9620, 1187, 3, 2, UNI_SK } /* gc=sk */, + { 1, 7018, 7612, 10, 3, UNI_IN__4_DOT_1 } /* presentin=4.1 */, + { 0, 184, 4829, 2, 5, UNI_XPOSIXDIGIT } /* isdigit */, + { 32, 8233, 4220, 7, 6, UNI_TANG } /* script=tangut */, + { 13, 9093, 42, 4, 36, UNI_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatibilityideographssupplement */, + { 1, 184, 6051, 2, 12, UNI_MAHJONG } /* ismahjongtiles */, + { 77, 8424, 5552, 6, 13, UNI_IPAEXT } /* block=ipaextensions */, + { 0, 6928, 26, 10, 1, UNI_XPOSIXLOWER } /* lowercase=y */, + { 0, 7108, 26, 10, 1, UNI_XPOSIXUPPER } /* uppercase=y */, + { 32, 1779, 26, 22, 1, UNI_CWT } /* changeswhentitlecased=y */, + { 0, 184, 837, 2, 18, UNI_PHONETICEXT } /* isphoneticextensions */, + { 2, 5565, 7828, 13, 8, UNI_JG__FARSIYEH } /* joininggroup=farsiyeh */, + { 32, 184, 8135, 2, 7, UNI_MAND } /* ismandaic */, + { 98, 5760, 8985, 13, 4, UNI_NV__1_SLASH_64 } /* numericvalue=1/64 */, + { 83, 8424, 9425, 6, 4, UNI_INTHAI } /* block=thai */, + { 1, 8424, 9650, 6, 3, UNI_OCR } /* block=ocr */, + { 0, 9049, 9683, 4, 3, UNI_AGE__3_DOT_1 } /* age=v31 */, + { 6, 1482, 1869, 4, 10, UNI_DIACRITICALS } /* indiacriticals */, + { 16, 9365, 7356, 4, 4, UNI_PALM } /* scx=palm */, + { 142, 9141, 3, 4, 1, -UNI_DIA } /* dia=f */, + { 0, 3868, 4747, 16, 15, UNI_UPPERCASELETTER } /* generalcategory=uppercaseletter */, + { 4, 1911, 6225, 22, 6, UNI_LB__ZWJ } /* indicsyllabiccategory=joiner */, + { 0, 184, 3020, 2, 13, UNI_DEVANAGARIEXT } /* isdevanagariext */, + { 19, 8430, 0, 6, 0, UNI_CARI } /* carian */, + { 0, 9365, 8002, 4, 7, UNI_BENG } /* scx=bengali */, + { 9, 9093, 2232, 4, 21, UNI_YIJING } /* blk=yijinghexagramsymbols */, + { 92, 9647, 9033, 3, 3, UNI_NV__3_SLASH_8 } /* nv=3/8 */, + { 0, 9647, 8382, 3, 5, UNI_NV__60000 } /* nv=60000 */, + { 0, 6885, 8, 3, 2, UNI_HAN } /* ishan */, + { 0, 8879, 0, 5, 0, UNI_inpc_values_index } /* inpc= */, + { 0, 5565, 4044, 13, 16, UNI_JG__MANICHAEANSAMEKH } /* joininggroup=manichaeansamekh */, + { 4, 8580, 3, 6, 1, -UNI__PERL_NCHAR } /* nchar=f */, + { 8, 8424, 4417, 6, 15, UNI_DIACRITICALSEXT } /* block=diacriticalsext */, + { 0, 2106, 9611, 21, 3, UNI_WB__EB } /* graphemeclusterbreak=ebg */, + { 6, 7128, 7284, 10, 9, UNI_WB__ML } /* wordbreak=midletter */, + { 2, 184, 3243, 2, 10, UNI_XPOSIXSPACE } /* iswhitespace */, + { 1, 8086, 36, 7, 1, UNI_GRBASE } /* grbase=t */, + { 1, 3671, 9485, 17, 4, UNI_QAAI } /* scriptextensions=zinh */, + { 0, 1362, 2373, 24, 4, UNI_CCC__L } /* canonicalcombiningclass=left */, + { 0, 8424, 1411, 7, 23, UNI_DIACRITICALSFORSYMBOLS } /* block=combiningmarksforsymbols */, + { 0, 6472, 3716, 4, 4, UNI_INCARIAN } /* incarian */, + { 4, 184, 719, 2, 21, UNI_ENCLOSEDALPHANUM } /* isenclosedalphanumerics */, + { 3, 2204, 6245, 4, 10, UNI_HUNG } /* isoldhungarian */, + { 0, 8869, 26, 5, 1, UNI_IDSB } /* idsb=y */, + { 1, 6885, 2958, 3, 8, UNI_HALFMARKS } /* ishalfmarks */, + { 36, 6918, 96, 10, 10, UNI_LB__AL } /* linebreak=alphabetic */, + { 64, 7852, 0, 8, 0, UNI_GURU } /* gurmukhi */, + { 0, 6816, 4268, 3, 4, UNI_INBAMUM } /* inbamum */, + { 29, 8839, 0, 5, 0, UNI_XPOSIXCNTRL } /* cntrl */, + { 0, 8424, 5552, 6, 6, UNI_IPAEXT } /* block=ipaext */, + { 0, 9629, 7909, 4, 7, UNI_LB__LF } /* lb=linefeed */, + { 0, 9093, 7204, 5, 8, UNI_INBHAIKSUKI } /* blk=bhaiksuki */, + { 0, 184, 4267, 2, 5, UNI_BAMU } /* isbamum */, + { 2, 2684, 6503, 19, 11, UNI_GCB__L } /* hangulsyllabletype=leadingjamo */, + { 0, 9620, 4402, 3, 15, UNI_PD } /* gc=dashpunctuation */, + { 11, 74, 0, 2, 0, UNI_ME } /* me */, + { 3, 9623, 5101, 3, 14, UNI_JG__MANICHAEANFIVE } /* jg=manichaeanfive */, + { 1, 8886, 9289, 3, 4, UNI_NSHU } /* sc=nshu */, + { 1, 2204, 8930, 3, 4, UNI_OSGE } /* isosage */, + { 16, 3868, 6039, 16, 12, UNI_NL } /* generalcategory=letternumber */, + { 20, 3671, 9349, 17, 4, UNI_ROHG } /* scriptextensions=rohg */, + { 2, 184, 114, 3, 34, UNI_DIACRITICALSFORSYMBOLS } /* iscombiningdiacriticalmarksforsymbols */, + { 1, 184, 9257, 2, 4, UNI_MLYM } /* ismlym */, + { 0, 9623, 5617, 3, 13, UNI_JG__MALAYALAMLLLA } /* jg=malayalamllla */, + { 3, 9620, 1472, 3, 9, UNI__PERL_SURROGATE } /* gc=surrogate */, + { 64, 1497, 1, 9, 1, UNI_N } /* category=n */, + { 0, 8424, 4267, 6, 8, UNI_BAMUMSUP } /* block=bamumsup */, + { 28, 2148, 2212, 3, 6, UNI_INSINHALA } /* insinhala */, + { 2, 2333, 0, 4, 0, UNI_GLAG } /* glag */, + { 3, 5339, 5, 15, 1, UNI_SB__SE } /* sentencebreak=se */, + { 1, 8959, 995, 5, 2, -UNI_XIDS } /* xids=no */, + { 0, 8960, 0, 4, 0, UNI_ids_values_index } /* ids= */, + { 1, 9093, 2169, 4, 21, UNI_MEETEIMAYEKEXT } /* blk=meeteimayekextensions */, + { 1, 122, 0, 9, 0, UNI_DIA } /* diacritic */, + { 0, 8520, 0, 6, 0, UNI_joinc_values_index } /* joinc= */, + { 1, 1362, 2912, 24, 13, UNI_CCC__214 } /* canonicalcombiningclass=attachedabove */, + { 4, 2148, 3309, 3, 11, UNI_SMALLKANAEXT } /* insmallkanaext */, + { 2, 1362, 7611, 24, 2, UNI_CCC__14 } /* canonicalcombiningclass=14 */, + { 3, 9365, 9390, 5, 3, UNI_SOGO } /* scx=sogo */, + { 0, 7860, 0, 8, 0, UNI_HIRA } /* hiragana */, + { 86, 8884, 4236, 5, 16, UNI_INSC__VOWELINDEPENDENT } /* insc=vowelindependent */, + { 0, 8233, 6051, 7, 4, UNI_SC__MAHJ } /* script=mahj */, + { 16, 8233, 3038, 7, 4, UNI_ETHI } /* script=ethi */, + { 1, 5835, 1, 12, 1, -UNI_BIDIC } /* bidicontrol=n */, + { 2, 6828, 3056, 10, 18, UNI_BC__ET } /* bidiclass=europeanterminator */, + { 20, 9093, 8303, 4, 7, UNI_INTIBETAN } /* blk=tibetan */, + { 1, 8233, 8250, 10, 4, UNI_SHAW } /* script=shavian */, + { 1, 6003, 36, 12, 1, UNI_JOINC } /* joincontrol=t */, + { 1, 9093, 4762, 4, 15, UNI_VEDICEXT } /* blk=vedicextensions */, + { 0, 4241, 3022, 4, 11, UNI_DEVANAGARIEXT } /* indevanagariext */, + { 0, 6005, 1387, 3, 23, UNI_CJKSYMBOLS } /* incjksymbolsandpunctuation */, + { 1, 8884, 4891, 5, 14, UNI_INSC__CONSONANTFINAL } /* insc=consonantfinal */, + { 12, 9093, 3518, 4, 17, UNI_CYRILLICEXTB } /* blk=cyrillicextendedb */, + { 2, 4447, 7176, 15, 9, UNI_EA__A } /* eastasianwidth=ambiguous */, + { 0, 3671, 8622, 17, 4, UNI_TELU } /* scriptextensions=telu */, + { 48, 9049, 7435, 4, 2, UNI_AGE__11 } /* age=11 */, + { 0, 6492, 0, 11, 0, UNI_KATAKANAEXT } /* katakanaext */, + { 5, 1536, 8073, 3, 6, UNI_INELYMAIC } /* inelymaic */, + { 0, 8205, 0, 4, 0, UNI_OSMA } /* osma */, + { 2, 9365, 7860, 4, 4, UNI_HIRA } /* scx=hira */, + { 0, 1362, 7540, 24, 3, UNI_WB__EB } /* canonicalcombiningclass=200 */, + { 14, 184, 8128, 2, 4, UNI_MAKA } /* ismaka */, + { 2, 8886, 6183, 3, 12, UNI_MEND } /* sc=mendekikakui */, + { 3, 9093, 7916, 4, 8, UNI_INMAHAJANI } /* blk=mahajani */, + { 8, 8233, 2532, 7, 4, UNI_BRAH } /* script=brah */, + { 0, 1497, 400, 9, 6, UNI_CF } /* category=format */, + { 0, 9093, 7347, 4, 9, UNI_INOLDTURKIC } /* blk=oldturkic */, + { 7, 9629, 6448, 3, 11, UNI_LB__IN } /* lb=inseparable */, + { 2, 3868, 4387, 16, 14, UNI_SC } /* generalcategory=currencysymbol */, + { 0, 9620, 698, 3, 6, UNI_N } /* gc=number */, + { 3, 8424, 2127, 6, 14, UNI_INHANIFIROHINGYA } /* block=hanifirohingya */, + { 20, 9113, 8810, 5, 4, UNI_CCC__33 } /* ccc=ccc33 */, + { 0, 5760, 8669, 13, 4, UNI_NV__1_SLASH_32 } /* numericvalue=1/32 */, + { 14, 5835, 0, 12, 0, UNI_bidic_values_index } /* bidicontrol= */, + { 1, 9137, 1, 4, 1, -UNI_DEP } /* dep=n */, + { 3, 21, 1622, 2, 9, UNI_LATINEXTE } /* inlatinexte */, + { 28, 9113, 8473, 5, 5, UNI_CCC__132 } /* ccc=ccc132 */, + { 0, 3002, 567, 18, 2, UNI_DT__NB } /* decompositiontype=nb */, + { 0, 1362, 8475, 24, 3, UNI_CCC__132 } /* canonicalcombiningclass=132 */, + { 0, 8580, 17, 7, 1, -UNI__PERL_NCHAR } /* nchar=no */, + { 5, 9593, 2722, 3, 19, UNI_BC__LRO } /* bc=lefttorightoverride */, + { 0, 2760, 0, 19, 0, UNI_MODIFIERTONELETTERS } /* modifiertoneletters */, + { 1, 8424, 6798, 6, 10, UNI_ARABICEXTA } /* block=arabicexta */, + { 0, 8233, 7239, 7, 9, UNI_SC__QAAI } /* script=inherited */, + { 3, 9365, 78, 4, 6, UNI_ARAB } /* scx=arabic */, + { 0, 8233, 9394, 8, 3, UNI_SC__SYRC } /* script=syrc */, + { 0, 8886, 8261, 3, 4, UNI_SOYO } /* sc=soyo */, + { 76, 9093, 1506, 4, 24, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supsymbolsandpictographs */, + { 0, 8959, 36, 5, 1, UNI_XIDS } /* xids=t */, + { 16, 1801, 995, 22, 2, -UNI_CWU } /* changeswhenuppercased=no */, + { 3, 4705, 2456, 5, 16, UNI_TERM } /* isterminalpunctuation */, + { 0, 9093, 2957, 4, 9, UNI_HALFMARKS } /* blk=halfmarks */, + { 1, 1911, 698, 22, 6, UNI_INSC__NUMBER } /* indicsyllabiccategory=number */, + { 5, 9205, 0, 4, 0, UNI_KNDA } /* knda */, + { 1, 3671, 8709, 17, 5, UNI_BUHD } /* scriptextensions=buhid */, + { 0, 9901, 6316, 3, 10, UNI_XIDC } /* isxidcontinue */, + { 4, 8233, 8262, 8, 3, UNI_SOYO } /* script=soyo */, + { 156, 9623, 3620, 3, 17, UNI_JG__MANICHAEANDHAMEDH } /* jg=manichaeandhamedh */, + { 2, 4580, 4109, 3, 6, UNI_INMYANMAR } /* inmyanmar */, + { 1, 4849, 3, 14, 1, -UNI_CI } /* caseignorable=f */, + { 1, 8886, 4946, 3, 4, UNI_CHAM } /* sc=cham */, + { 2, 7018, 7159, 10, 1, UNI_IN__5 } /* presentin=5 */, + { 31, 184, 1999, 2, 22, UNI_MODIFIERLETTERS } /* isspacingmodifierletters */, + { 0, 5565, 4552, 13, 15, UNI_JG__MANICHAEANSADHE } /* joininggroup=manichaeansadhe */, + { 5, 9365, 8142, 4, 7, UNI_MARC } /* scx=marchen */, + { 9, 8332, 2238, 3, 3, UNI_POSIXXDIGIT } /* isahex */, + { 258, 9946, 3984, 3, 3, UNI_SARB } /* issarb */, + { 4, 7365, 0, 4, 0, UNI_PAUC } /* pauc */, + { 1, 9093, 2006, 4, 15, UNI_MODIFIERLETTERS } /* blk=modifierletters */, + { 0, 1362, 7502, 24, 1, UNI_CCC__8 } /* canonicalcombiningclass=8 */, + { 0, 2106, 4140, 21, 5, UNI_GCB__XX } /* graphemeclusterbreak=other */, + { 0, 8635, 0, 5, 0, UNI_ideo_values_index } /* ideo= */, + { 2, 184, 1714, 3, 20, UNI_CWCF } /* ischangeswhencasefolded */, + { 26, 3820, 0, 16, 0, UNI_PE } /* closepunctuation */, + { 4, 184, 7892, 2, 8, UNI_JAVA } /* isjavanese */, + { 0, 3671, 2127, 17, 4, UNI_HAN } /* scriptextensions=hani */, + { 0, 6231, 5678, 12, 4, UNI_NV__NAN } /* numerictype=none */, + { 7, 9093, 2333, 4, 20, UNI_GLAGOLITICSUP } /* blk=glagoliticsupplement */, + { 1, 9113, 9077, 4, 4, UNI_WB__EB } /* ccc=atbl */, + { 1, 8424, 4175, 6, 13, UNI_MATHOPERATORS } /* block=mathoperators */, + { 33, 1911, 4327, 22, 15, UNI_INSC__CONSONANTKILLER } /* indicsyllabiccategory=consonantkiller */, + { 0, 6918, 6349, 10, 11, UNI_LB__BB } /* linebreak=breakbefore */, + { 1, 9093, 4582, 4, 15, UNI_INMEROITICCURSIVE } /* blk=meroiticcursive */, + { 10, 1801, 8864, 22, 5, -UNI_CWU } /* changeswhenuppercased=false */, + { 1, 2627, 0, 19, 0, UNI_ENCLOSEDALPHANUMSUP } /* enclosedalphanumsup */, + { 1, 8886, 2253, 3, 20, UNI_HLUW } /* sc=anatolianhieroglyphs */, + { 3, 2457, 952, 5, 24, UNI_ALPHABETICPF } /* inalphabeticpresentationforms */, + { 9, 8894, 0, 4, 0, UNI_LIMB } /* limb */, + { 6, 4580, 1540, 3, 13, UNI_MUSIC } /* inmusicalsymbols */, + { 7, 3671, 9173, 17, 4, UNI_GURU } /* scriptextensions=guru */, + { 1, 8879, 5312, 3, 13, UNI_INPSALTERPAHLAVI } /* inpsalterpahlavi */, + { 3, 9647, 7502, 3, 1, UNI_NV__8 } /* nv=8 */, + { 1, 9623, 6785, 3, 2, UNI_JG__FE } /* jg=fe */, + { 1, 9647, 8364, 3, 2, UNI_NV__40 } /* nv=40 */, + { 1, 184, 6003, 2, 11, UNI_JOINC } /* isjoincontrol */, + { 0, 9647, 7604, 3, 8, UNI_NV__2_SLASH_5 } /* nv=4.00e-01 */, + { 1, 8412, 36, 6, 1, UNI_BIDIC } /* bidic=t */, + { 1, 9049, 9686, 4, 3, UNI_AGE__3_DOT_2 } /* age=v32 */, + { 0, 9365, 9489, 4, 4, UNI_ZYYY } /* scx=zyyy */, + { 2, 5760, 7540, 13, 8, UNI_NV__20000000 } /* numericvalue=20000000 */, + { 0, 3868, 5258, 16, 11, UNI_MC } /* generalcategory=spacingmark */, + { 0, 5269, 8864, 14, 5, -UNI_PATSYN } /* patternsyntax=false */, + { 1, 3620, 0, 10, 0, UNI_MANI } /* manichaean */, + { 2, 8886, 8310, 3, 7, UNI_SC__TIRH } /* sc=tirhuta */, + { 0, 2708, 833, 4, 4, UNI_ARROWS } /* inarrows */, + { 0, 1482, 2379, 24, 5, UNI_INPC__RIGHT } /* indicpositionalcategory=right */, + { 0, 5193, 0, 3, 0, UNI_ANY } /* any */, + { 3, 9909, 879, 3, 9, UNI_CO } /* isprivateuse */, + { 3, 1924, 1015, 10, 5, UNI_L } /* category=letter */, + { 0, 9113, 7723, 4, 2, UNI_CCC__18 } /* ccc=18 */, + { 0, 184, 1622, 2, 9, UNI_LATINEXTE } /* islatinexte */, + { 21, 9365, 8538, 4, 6, UNI_KHOJ } /* scx=khojki */, + { 0, 8424, 2169, 6, 14, UNI_MEETEIMAYEKEXT } /* block=meeteimayekext */, + { 1, 184, 9777, 2, 2, UNI_ZP } /* iszp */, + { 3, 3293, 8318, 3, 6, UNI_UCASEXT } /* inucasext */, + { 4, 2204, 6614, 3, 10, UNI_LO } /* isotherletter */, + { 3, 9093, 1386, 4, 10, UNI_CJKSYMBOLS } /* blk=cjksymbols */, + { 0, 8886, 6723, 3, 4, UNI_SC__SYLO } /* sc=sylo */, + { 2, 5760, 7684, 13, 8, UNI_NV__1_SLASH_160 } /* numericvalue=6.25e-03 */, + { 0, 9093, 6027, 4, 12, UNI_KHMERSYMBOLS } /* blk=khmersymbols */, + { 1, 5760, 8664, 13, 5, UNI_NV__1_SLASH_160 } /* numericvalue=1/160 */, + { 5, 9620, 467, 3, 11, UNI_P } /* gc=punctuation */, + { 4, 9647, 1219, 3, 3, UNI_NV__NAN } /* nv=nan */, + { 12, 5955, 0, 12, 0, UNI_GONG } /* gunjalagondi */, + { 3, 6888, 995, 10, 2, -UNI_DIA } /* diacritic=no */, + { 0, 184, 6027, 2, 12, UNI_KHMERSYMBOLS } /* iskhmersymbols */, + { 47, 9629, 5943, 3, 4, UNI_LB__GL } /* lb=glue */, + { 0, 8051, 9734, 7, 3, UNI_COMPEX } /* compex=yes */, + { 1, 8604, 8864, 6, 5, -UNI_QMARK } /* qmark=false */, + { 3, 184, 122, 2, 9, UNI_DIA } /* isdiacritic */, + { 2, 7148, 0, 10, 0, UNI_YIRADICALS } /* yiradicals */, + { 5, 1158, 2221, 3, 3, UNI_INTHAI } /* inthai */, + { 4, 6918, 5991, 10, 12, UNI_LB__IS } /* linebreak=infixnumeric */, + { 80, 9093, 478, 4, 31, UNI_MATHALPHANUM } /* blk=mathematicalalphanumericsymbols */, + { 4, 6918, 6448, 10, 11, UNI_LB__IN } /* linebreak=inseparable */, + { 0, 3248, 9433, 6, 4, UNI_XPOSIXSPACE } /* space=true */, + { 0, 8424, 3038, 6, 18, UNI_ETHIOPICSUP } /* block=ethiopicsupplement */, + { 0, 9365, 8289, 4, 7, UNI_LANA } /* scx=taitham */, + { 1, 6918, 5059, 10, 14, UNI_LB__BK } /* linebreak=mandatorybreak */, + { 7, 9623, 5087, 3, 14, UNI_JG__MANICHAEANBETH } /* jg=manichaeanbeth */, + { 0, 2106, 6525, 21, 3, UNI_LB__H3 } /* graphemeclusterbreak=lvt */, + { 11, 9093, 4432, 4, 15, UNI_DIACRITICALSSUP } /* blk=diacriticalssup */, + { 129, 1497, 7, 9, 1, UNI_C } /* category=c */, + { 0, 2453, 0, 4, 0, UNI_TERM } /* term */, + { 0, 8556, 9734, 6, 3, UNI_XPOSIXLOWER } /* lower=yes */, + { 5, 9365, 8622, 4, 6, UNI_TELU } /* scx=telugu */, + { 0, 27, 0, 2, 0, UNI_LOWERCASELETTER } /* ll */, + { 0, 8871, 72, 3, 2, UNI_SB__LE } /* sb=le */, + { 0, 21, 3980, 2, 16, UNI_LINEARBIDEOGRAMS } /* inlinearbideograms */, + { 144, 8233, 8538, 7, 4, UNI_SC__KHOJ } /* script=khoj */, + { 37, 9365, 7302, 4, 9, UNI_NBAT } /* scx=nabataean */, + { 5, 8233, 6558, 7, 11, UNI_MEDF } /* script=medefaidrin */, + { 72, 4175, 0, 13, 0, UNI_MATHOPERATORS } /* mathoperators */, + { 6, 8874, 9734, 5, 3, UNI_IDST } /* idst=yes */, + { 0, 6918, 25, 10, 2, UNI_LB__SY } /* linebreak=sy */, + { 0, 8484, 0, 6, 0, UNI_CAKM } /* chakma */, + { 0, 8233, 9469, 7, 4, UNI_XSUX } /* script=xsux */, + { 1, 8412, 9433, 6, 4, UNI_BIDIC } /* bidic=true */, + { 4, 8886, 2836, 3, 9, UNI_SUND } /* sc=sundanese */, + { 243, 8886, 9293, 3, 4, UNI_OGAM } /* sc=ogam */, + { 0, 2085, 0, 11, 0, UNI_CYRILLICSUP } /* cyrillicsup */, + { 26, 8886, 3772, 3, 8, UNI_SC__BOPO } /* sc=bopomofo */, + { 1, 1801, 26, 22, 1, UNI_CWU } /* changeswhenuppercased=y */, + { 5, 1362, 7558, 24, 2, UNI_CCC__13 } /* canonicalcombiningclass=13 */, + { 0, 3671, 1622, 17, 5, UNI_LATN } /* scriptextensions=latin */, + { 1, 21, 3964, 2, 9, UNI_LATIN1 } /* inlatin1sup */, + { 4, 3736, 5958, 5, 9, UNI_INGUNJALAGONDI } /* ingunjalagondi */, + { 0, 2204, 125, 3, 2, UNI_OCR } /* isocr */, + { 104, 1757, 26, 22, 1, UNI_CWL } /* changeswhenlowercased=y */, + { 1, 184, 8072, 2, 7, UNI_ELYM } /* iselymaic */, + { 17, 1999, 0, 22, 0, UNI_MODIFIERLETTERS } /* spacingmodifierletters */, + { 0, 9093, 689, 4, 30, UNI_CUNEIFORMNUMBERS } /* blk=cuneiformnumbersandpunctuation */, + { 2, 4821, 995, 14, 2, -UNI_POSIXXDIGIT } /* asciihexdigit=no */, + { 0, 9093, 2627, 4, 19, UNI_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumsup */, + { 2, 3110, 0, 8, 0, UNI_GEOR } /* georgian */, + { 0, 2684, 6525, 19, 11, UNI_LB__H3 } /* hangulsyllabletype=lvtsyllable */, + { 0, 6768, 2233, 3, 20, UNI_YIJING } /* isyijinghexagramsymbols */, + { 0, 8424, 4477, 6, 15, UNI_INHANGUL } /* block=hangulsyllables */, + { 1, 9647, 9014, 3, 3, UNI_NV__5_SLASH_2 } /* nv=5/2 */, + { 0, 9093, 3501, 4, 17, UNI_CYRILLICEXTA } /* blk=cyrillicextendeda */, + { 0, 8871, 8616, 3, 5, UNI_SB__ST } /* sb=sterm */, + { 2, 8562, 0, 4, 0, UNI_LYCI } /* lyci */, + { 1, 2148, 2894, 3, 18, UNI_SUPARROWSC } /* insupplementalarrowsc */, + { 1, 6918, 9757, 10, 2, UNI_LB__H2 } /* linebreak=h2 */, + { 2, 9049, 7507, 4, 2, UNI_AGE__12 } /* age=12 */, + { 6, 9605, 7836, 3, 8, UNI_DT__FRA } /* dt=fraction */, + { 1, 3002, 9461, 18, 4, UNI_EA__F } /* decompositiontype=wide */, + { 0, 9365, 1573, 4, 4, UNI_PHAG } /* scx=phag */, + { 23, 8100, 1, 7, 1, -UNI_HYPHEN } /* hyphen=n */, + { 0, 8886, 8622, 3, 4, UNI_SC__TELU } /* sc=telu */, + { 0, 1162, 0, 26, 0, UNI_HALFANDFULLFORMS } /* halfwidthandfullwidthforms */, + { 1, 184, 8086, 2, 6, UNI_GRBASE } /* isgrbase */, + { 0, 8634, 9433, 6, 4, UNI_UIDEO } /* uideo=true */, + { 1, 8424, 4975, 6, 7, UNI_KANASUP } /* block=kanasup */, + { 16, 1757, 0, 22, 0, UNI_cwl_values_index } /* changeswhenlowercased= */, + { 2, 184, 38, 2, 2, UNI_XPOSIXDIGIT } /* isnd */, + { 3, 2148, 8255, 3, 6, UNI_INSIDDHAM } /* insiddham */, + { 281, 3038, 0, 11, 0, UNI_ETHIOPICSUP } /* ethiopicsup */, + { 1, 9093, 4762, 4, 8, UNI_VEDICEXT } /* blk=vedicext */, + { 1, 9209, 0, 4, 0, UNI_KTHI } /* kthi */, + { 1, 5760, 1219, 13, 3, UNI_NV__NAN } /* numericvalue=nan */, + { 1, 9093, 7995, 4, 7, UNI_INAVESTAN } /* blk=avestan */, + { 0, 6027, 0, 5, 0, UNI_KHMR } /* khmer */, + { 8, 5760, 8364, 13, 4, UNI_NV__4000 } /* numericvalue=4000 */, + { 2, 3900, 0, 16, 0, UNI_HALFANDFULLFORMS } /* halfandfullforms */, + { 0, 2148, 2000, 3, 21, UNI_MODIFIERLETTERS } /* inspacingmodifierletters */, + { 2, 9389, 0, 4, 0, UNI_SOGO } /* sogo */, + { 2, 5760, 9741, 13, 2, UNI_NV__44 } /* numericvalue=44 */, + { 39, 1801, 36, 22, 1, UNI_CWU } /* changeswhenuppercased=t */, + { 0, 8959, 26, 5, 1, UNI_XIDS } /* xids=y */, + { 32, 2106, 73, 21, 2, UNI_WB__EB } /* graphemeclusterbreak=em */, + { 22, 3736, 7854, 4, 6, UNI_INGURMUKHI } /* ingurmukhi */, + { 0, 4361, 1578, 4, 16, UNI_GEOMETRICSHAPESEXT } /* ingeometricshapesext */, + { 3, 5760, 8400, 13, 6, UNI_NV__900000 } /* numericvalue=900000 */, + { 0, 3951, 1278, 3, 2, UNI_IDS } /* isids */, + { 17, 9365, 8919, 4, 5, UNI_OGAM } /* scx=ogham */, + { 0, 9782, 7128, 4, 4, UNI_POSIXWORD } /* perlword */, + { 4, 8886, 2164, 4, 3, UNI_SC__KTHI } /* sc=kthi */, + { 0, 9293, 0, 4, 0, UNI_OGAM } /* ogam */, + { 8, 9904, 3248, 5, 5, UNI_POSIXSPACE } /* posixspace */, + { 64, 9731, 4645, 3, 2, UNI_WB__DQ } /* wb=dq */, + { 0, 7128, 5346, 10, 2, UNI_WB__EB } /* wordbreak=eb */, + { 132, 5760, 8371, 13, 2, UNI_NV__32 } /* numericvalue=32 */, + { 0, 78, 0, 6, 0, UNI_ARAB } /* arabic */, + { 3, 9093, 1458, 4, 24, UNI_HIGHPUSURROGATES } /* blk=highprivateusesurrogates */, + { 139, 8886, 1085, 3, 4, UNI_SC__HANG } /* sc=hang */, + { 0, 9365, 8859, 4, 5, UNI_DOGR } /* scx=dogra */, + { 0, 9647, 8354, 3, 4, UNI_NV__6000 } /* nv=6000 */, + { 1, 3671, 8538, 17, 6, UNI_KHOJ } /* scriptextensions=khojki */, + { 61, 8424, 1622, 6, 9, UNI_LATINEXTE } /* block=latinexte */, + { 0, 9647, 7644, 3, 8, UNI_NV__11_SLASH_2 } /* nv=5.50e+00 */, + { 0, 3951, 415, 3, 10, UNI_IDEO } /* isideographic */, + { 128, 8886, 7812, 3, 8, UNI_SC__DUPL } /* sc=duployan */, + { 0, 3243, 26, 11, 1, UNI_XPOSIXSPACE } /* whitespace=y */, + { 1, 9901, 1768, 8, 5, UNI_XPOSIXLOWER } /* isxposixlower */, + { 0, 9093, 837, 4, 11, UNI_PHONETICEXT } /* blk=phoneticext */, + { 1, 9093, 3210, 4, 8, UNI_DINGBATS } /* blk=dingbats */, + { 0, 9623, 6334, 3, 4, UNI_JG__NOON } /* jg=noon */, + { 0, 9647, 9497, 3, 3, UNI_NV__1_SLASH_5 } /* nv=1/5 */, + { 6, 6005, 1031, 4, 4, UNI_INCOPTIC } /* incoptic */, + { 9, 3868, 4080, 16, 10, UNI_SM } /* generalcategory=mathsymbol */, + { 6, 6005, 2065, 3, 20, UNI_CJKRADICALSSUP } /* incjkradicalssupplement */, + { 22, 9593, 4312, 3, 15, UNI_BC__CS } /* bc=commonseparator */, + { 4, 9313, 36, 4, 1, UNI_PCM } /* pcm=t */, + { 0, 8424, 8128, 6, 7, UNI_INMAKASAR } /* block=makasar */, + { 2, 6602, 0, 11, 0, UNI_NAND } /* nandinagari */, + { 144, 1497, 8839, 9, 5, UNI_XPOSIXCNTRL } /* category=cntrl */, + { 27, 6243, 0, 12, 0, UNI_HUNG } /* oldhungarian */, + { 0, 184, 7248, 2, 9, UNI_SIND } /* iskhudawadi */, + { 131, 184, 3038, 2, 11, UNI_ETHIOPICSUP } /* isethiopicsup */, + { 0, 9629, 7924, 3, 8, UNI_LB__NL } /* lb=nextline */, + { 0, 2708, 29, 4, 4, UNI_INARABIC } /* inarabic */, + { 0, 1362, 8, 24, 1, UNI_CCC__A } /* canonicalcombiningclass=a */, + { 0, 9093, 4821, 4, 5, UNI_ASCII } /* blk=ascii */, + { 6, 2142, 8915, 3, 4, UNI_INNUSHU } /* innushu */, + { 1, 5760, 7564, 13, 8, UNI_NV__1_SLASH_320 } /* numericvalue=3.13e-03 */, + { 0, 9365, 6724, 5, 10, UNI_SYLO } /* scx=sylotinagri */, + { 160, 2148, 7079, 3, 9, UNI_SUPARROWSB } /* insuparrowsb */, + { 7, 184, 7048, 2, 10, UNI_SAUR } /* issaurashtra */, + { 3, 8496, 8864, 6, 5, -UNI_CWKCF } /* cwkcf=false */, + { 0, 8859, 0, 4, 0, UNI_DOGR } /* dogr */, + { 1, 9093, 3705, 4, 17, UNI_SMALLFORMS } /* blk=smallformvariants */, + { 3, 1713, 8864, 22, 5, -UNI_CWCF } /* changeswhencasefolded=false */, + { 0, 2930, 0, 4, 0, UNI_CHER } /* cher */, + { 2, 5760, 8354, 13, 3, UNI_NV__600 } /* numericvalue=600 */, + { 0, 7356, 0, 4, 0, UNI_PALM } /* palm */, + { 3, 1362, 9527, 24, 3, UNI_CCC__R } /* canonicalcombiningclass=226 */, + { 1, 1691, 4687, 22, 4, UNI_BPT__O } /* bidipairedbrackettype=open */, + { 16, 3038, 0, 8, 0, UNI_ETHI } /* ethiopic */, + { 5, 7018, 9563, 10, 3, UNI_IN__5_DOT_1 } /* presentin=5.1 */, + { 13, 8424, 7852, 6, 8, UNI_INGURMUKHI } /* block=gurmukhi */, + { 0, 9365, 1599, 4, 6, UNI_HANG } /* scx=hangul */, + { 1, 8233, 1135, 9, 2, UNI_SC__SHRD } /* script=shrd */, + { 1, 9647, 9743, 3, 2, UNI_NV__45 } /* nv=45 */, + { 292, 1924, 6040, 10, 11, UNI_NL } /* category=letternumber */, + { 0, 7018, 9686, 10, 3, UNI_IN__3_DOT_2 } /* presentin=v32 */, + { 1, 6949, 6362, 4, 9, UNI_CASEDLETTER } /* iscasedletter */, + { 3, 1497, 4402, 9, 15, UNI_PD } /* category=dashpunctuation */, + { 0, 9629, 9773, 3, 2, UNI_LB__XX } /* lb=xx */, + { 2, 8233, 9133, 7, 4, UNI_SC__CYRL } /* script=cyrl */, + { 0, 184, 1530, 2, 23, UNI_BYZANTINEMUSIC } /* isbyzantinemusicalsymbols */, + { 0, 6015, 6470, 12, 11, UNI_JT__C } /* joiningtype=joincausing */, + { 0, 4598, 1132, 4, 2, UNI_CPRT } /* iscprt */, + { 21, 6928, 9433, 10, 4, UNI_XPOSIXLOWER } /* lowercase=true */, + { 0, 2212, 2648, 4, 8, UNI_JAMO } /* inhanguljamo */, + { 2, 6005, 510, 3, 19, UNI_CJK } /* incjkunifiedideographs */, + { 5, 4627, 17, 16, 1, UNI_NFKCQC__N } /* nfkcquickcheck=no */, + { 2, 9113, 7539, 4, 2, UNI_CCC__22 } /* ccc=22 */, + { 48, 8086, 1, 7, 1, -UNI_GRBASE } /* grbase=n */, + { 0, 3671, 9309, 17, 4, UNI_OSGE } /* scriptextensions=osge */, + { 15, 7018, 7507, 10, 4, UNI_IN__12 } /* presentin=12.0 */, + { 1, 184, 24, 2, 1, UNI_L } /* isl */, + { 16, 21, 2232, 2, 21, UNI_YIJING } /* inyijinghexagramsymbols */, + { 0, 8424, 4807, 6, 14, UNI_ANCIENTSYMBOLS } /* block=ancientsymbols */, + { 0, 1084, 0, 25, 0, UNI_CWKCF } /* changeswhennfkccasefolded */, + { 8, 1911, 8704, 22, 5, UNI_INSC__BINDU } /* indicsyllabiccategory=bindu */, + { 11, 8604, 3, 6, 1, -UNI_QMARK } /* qmark=f */, + { 0, 9731, 1188, 3, 2, UNI_WB__KA } /* wb=ka */, + { 2, 9365, 8652, 4, 6, UNI_WCHO } /* scx=wancho */, + { 4, 6828, 2817, 10, 19, UNI_BC__RLO } /* bidiclass=righttoleftoverride */, + { 18, 8899, 0, 5, 0, UNI_math_values_index } /* math= */, + { 0, 8219, 3, 7, 1, -UNI_PATSYN } /* patsyn=f */, + { 0, 9946, 8248, 3, 6, UNI_SHAW } /* isshavian */, + { 0, 1768, 0, 9, 0, UNI_XPOSIXLOWER } /* lowercase */, + { 4, 8406, 1, 6, 1, -UNI_XPOSIXALPHA } /* alpha=n */, + { 1, 6635, 0, 11, 0, UNI_SO } /* othersymbol */, + { 0, 9093, 7008, 4, 10, UNI_INPHOENICIAN } /* blk=phoenician */, + { 3, 719, 0, 30, 0, UNI_ENCLOSEDALPHANUMSUP } /* enclosedalphanumericsupplement */, + { 2, 3671, 8699, 17, 5, UNI_BATK } /* scriptextensions=batak */, + { 1, 8886, 9309, 3, 4, UNI_OSGE } /* sc=osge */, + { 191, 2703, 36, 19, 1, UNI_IDST } /* idstrinaryoperator=t */, + { 24, 6928, 9734, 10, 3, UNI_XPOSIXLOWER } /* lowercase=yes */, + { 276, 339, 0, 2, 0, UNI_LO } /* lo */, + { 0, 8894, 0, 5, 0, UNI_LIMB } /* limbu */, + { 1, 3671, 2930, 17, 8, UNI_CHER } /* scriptextensions=cherokee */, + { 2, 3092, 0, 18, 0, UNI_INPUNCTUATION } /* generalpunctuation */, + { 0, 184, 8142, 2, 7, UNI_MARC } /* ismarchen */, + { 4, 3671, 6602, 17, 4, UNI_NAND } /* scriptextensions=nand */, + { 30, 9946, 3730, 3, 3, UNI_SGNW } /* issgnw */, + { 1, 3236, 3, 18, 1, -UNI__PERL_PATWS } /* patternwhitespace=f */, + { 4, 1239, 0, 24, 0, UNI_COMPEX } /* fullcompositionexclusion */, + { 0, 6918, 5952, 10, 3, UNI_LB__ZWJ } /* linebreak=zwj */, + { 6, 9237, 0, 3, 0, UNI_LOE } /* loe */, + { 2, 9647, 9021, 3, 4, UNI_NV__3_SLASH_16 } /* nv=3/16 */, + { 57, 5835, 9734, 12, 3, UNI_BIDIC } /* bidicontrol=yes */, + { 0, 8338, 995, 7, 2, -UNI_XPOSIXSPACE } /* wspace=no */, + { 5, 9093, 5045, 4, 14, UNI_LATINEXTE } /* blk=latinextendede */, + { 4, 9113, 3433, 4, 17, UNI_WB__EB } /* ccc=attachedbelowleft */, + { 0, 8886, 9409, 3, 4, UNI_SC__TAML } /* sc=taml */, + { 16, 9731, 72, 3, 2, UNI_WB__LE } /* wb=le */, + { 0, 9113, 8837, 4, 2, UNI_CCC__91 } /* ccc=91 */, + { 73, 184, 8652, 2, 6, UNI_WCHO } /* iswancho */, + { 0, 8424, 1458, 6, 24, UNI_HIGHPUSURROGATES } /* block=highprivateusesurrogates */, + { 0, 184, 9197, 2, 4, UNI_KALI } /* iskali */, + { 0, 9647, 7620, 3, 8, UNI_NV__9_SLASH_2 } /* nv=4.50e+00 */, + { 0, 8960, 995, 4, 2, -UNI_IDS } /* ids=no */, + { 1, 9623, 6547, 3, 11, UNI_JG__MALAYALAMRA } /* jg=malayalamra */, + { 64, 9647, 7588, 3, 8, UNI_NV__3_SLASH_8 } /* nv=3.75e-01 */, + { 5, 9365, 9213, 4, 4, UNI_LANA } /* scx=lana */, + { 0, 5213, 17, 15, 1, UNI_COMPEX } /* nfcquickcheck=no */, + { 0, 184, 4076, 2, 16, UNI_MISCMATHSYMBOLSA } /* ismiscmathsymbolsa */, + { 2, 184, 43, 3, 15, UNI_CJKCOMPAT } /* iscjkcompatibility */, + { 33, 9623, 8658, 3, 4, UNI_JG__YUDH } /* jg=yudh */, + { 0, 6315, 995, 12, 2, -UNI_XIDC } /* xidcontinue=no */, + { 1, 8233, 9489, 7, 4, UNI_SC__ZYYY } /* script=zyyy */, + { 1, 8233, 8628, 7, 4, UNI_SC__THAA } /* script=thaa */, + { 0, 5565, 8689, 13, 5, UNI_JG__ALAPH } /* joininggroup=alaph */, + { 1, 9493, 0, 4, 0, UNI_ZZZZ } /* zzzz */, + { 1, 8233, 9217, 7, 3, UNI_LAO } /* script=lao */, + { 0, 9365, 6558, 4, 11, UNI_MEDF } /* scx=medefaidrin */, + { 3, 9489, 0, 4, 0, UNI_ZYYY } /* zyyy */, + { 0, 1362, 9771, 24, 2, UNI_CCC__9 } /* canonicalcombiningclass=vr */, + { 4, 5979, 9734, 12, 3, UNI_IDEO } /* ideographic=yes */, + { 0, 2148, 1507, 3, 23, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* insupsymbolsandpictographs */, + { 1, 6828, 0, 10, 0, UNI_bc_values_index } /* bidiclass= */, + { 324, 8233, 8709, 7, 5, UNI_SC__BUHD } /* script=buhid */, + { 4, 6015, 18, 12, 1, UNI_JT__R } /* joiningtype=r */, + { 0, 3688, 26, 17, 1, UNI_STERM } /* sentenceterminal=y */, + { 6, 5760, 8988, 13, 2, UNI_NV__41 } /* numericvalue=41 */, + { 1, 5565, 6657, 13, 11, UNI_JG__ROHINGYAYEH } /* joininggroup=rohingyayeh */, + { 2, 3868, 132, 16, 2, UNI_LM } /* generalcategory=lm */, + { 3, 8424, 8135, 6, 7, UNI_INMANDAIC } /* block=mandaic */, + { 1, 9662, 8864, 3, 5, -UNI_SD } /* sd=false */, + { 1, 8424, 1003, 6, 11, UNI_ENCLOSEDCJK } /* block=enclosedcjk */, + { 63, 9629, 9626, 3, 2, UNI_GCB__T } /* lb=jt */, + { 0, 9093, 6858, 4, 10, UNI_CJKSTROKES } /* blk=cjkstrokes */, + { 66, 9593, 3182, 3, 18, UNI_BC__LRI } /* bc=lefttorightisolate */, + { 50, 3671, 8191, 17, 7, UNI_OLCK } /* scriptextensions=olchiki */, + { 2, 1911, 5474, 22, 13, UNI_INSC__CONSONANTDEAD } /* indicsyllabiccategory=consonantdead */, + { 5, 8170, 0, 8, 0, UNI_NFKDQC__N } /* nfkdqc=n */, + { 0, 9365, 9317, 4, 4, UNI_PHLP } /* scx=phlp */, + { 42, 4462, 9734, 15, 3, UNI_GREXT } /* graphemeextend=yes */, + { 0, 9093, 6558, 4, 11, UNI_INMEDEFAIDRIN } /* blk=medefaidrin */, + { 0, 9365, 4220, 4, 6, UNI_TANG } /* scx=tangut */, + { 1, 8886, 1189, 4, 7, UNI_SC__KANA } /* sc=katakana */, + { 0, 9409, 0, 4, 0, UNI_TAML } /* taml */, + { 0, 7025, 9695, 3, 3, UNI_IN__5 } /* in=v50 */, + { 4, 184, 132, 2, 2, UNI_LM } /* islm */, + { 0, 5213, 0, 15, 0, UNI_COMPEX } /* nfcquickcheck=n */, + { 1, 9623, 6063, 3, 12, UNI_JG__MALAYALAMBHA } /* jg=malayalambha */, + { 3, 8332, 1340, 4, 22, UNI_ARABICPFB } /* isarabicpresentationformsb */, + { 0, 8886, 7203, 3, 9, UNI_BHKS } /* sc=bhaiksuki */, + { 2, 9620, 5353, 3, 14, UNI_ZS } /* gc=spaceseparator */, + { 8, 7018, 9719, 10, 3, UNI_IN__8 } /* presentin=v80 */, + { 0, 9365, 493, 4, 3, UNI_HAN } /* scx=han */, + { 9, 9113, 7167, 4, 9, UNI_CCC__AL } /* ccc=aboveleft */, + { 0, 1243, 995, 21, 2, -UNI_CE } /* compositionexclusion=no */, + { 2, 8879, 879, 3, 9, UNI_PUA } /* inprivateuse */, + { 9, 1482, 1869, 4, 20, UNI_DIACRITICALSFORSYMBOLS } /* indiacriticalsforsymbols */, + { 0, 1497, 6624, 9, 11, UNI_NO } /* category=othernumber */, + { 3, 9365, 8226, 4, 7, UNI_PHAG } /* scx=phagspa */, + { 6, 5760, 8822, 13, 2, UNI_NV__35 } /* numericvalue=35 */, + { 0, 9647, 8364, 3, 5, UNI_NV__40000 } /* nv=40000 */, + { 2, 3671, 3020, 17, 10, UNI_DEVA } /* scriptextensions=devanagari */, + { 0, 8424, 1387, 7, 23, UNI_CJKSYMBOLS } /* block=cjksymbolsandpunctuation */, + { 10, 9365, 3984, 5, 3, UNI_SARB } /* scx=sarb */, + { 1, 8886, 7995, 3, 7, UNI_AVST } /* sc=avestan */, + { 34, 8538, 0, 6, 0, UNI_KHOJ } /* khojki */, + { 5, 3243, 36, 11, 1, UNI_XPOSIXSPACE } /* whitespace=t */, + { 1, 5552, 0, 6, 0, UNI_IPAEXT } /* ipaext */, + { 0, 3251, 36, 3, 1, UNI_CE } /* ce=t */, + { 1, 184, 2211, 2, 21, UNI_SINHALAARCHAICNUMBERS } /* issinhalaarchaicnumbers */, + { 0, 8233, 7844, 7, 8, UNI_SC__GUJR } /* script=gujarati */, + { 72, 184, 11, 2, 2, UNI_DI } /* isdi */, + { 0, 9129, 8864, 4, 5, -UNI_CWU } /* cwu=false */, + { 135, 9129, 26, 4, 1, UNI_CWU } /* cwu=y */, + { 1, 9647, 8970, 3, 3, UNI_NV__1_SLASH_2 } /* nv=1/2 */, + { 0, 1362, 8646, 24, 6, UNI_CCC__9 } /* canonicalcombiningclass=virama */, + { 0, 9337, 0, 4, 0, UNI_QAAI } /* qaai */, + { 9, 8233, 8679, 7, 5, UNI_SC__ADLM } /* script=adlam */, + { 1, 9093, 7311, 4, 9, UNI_INNEWTAILUE } /* blk=newtailue */, + { 195, 184, 2409, 2, 4, UNI_MONG } /* ismong */, + { 2, 184, 9481, 2, 4, UNI_ZANB } /* iszanb */, + { 2, 9623, 6075, 3, 12, UNI_JG__MALAYALAMLLA } /* jg=malayalamlla */, + { 2, 5760, 8400, 13, 5, UNI_NV__90000 } /* numericvalue=90000 */, + { 0, 4387, 0, 14, 0, UNI_SC } /* currencysymbol */, + { 1, 4580, 2780, 3, 11, UNI_MONGOLIANSUP } /* inmongoliansup */, + { 0, 9901, 7128, 8, 4, UNI_XPOSIXWORD } /* isxposixword */, + { 0, 1362, 8802, 24, 2, UNI_CCC__31 } /* canonicalcombiningclass=31 */, + { 0, 4627, 26, 15, 1, UNI_NFKCQC__Y } /* nfkcquickcheck=y */, + { 1, 8233, 3980, 7, 7, UNI_SC__LINB } /* script=linearb */, + { 1, 9620, 0, 3, 0, UNI_gc_values_index } /* gc= */, + { 55, 1779, 1, 22, 1, -UNI_CWT } /* changeswhentitlecased=n */, + { 1, 3002, 1223, 18, 7, UNI_DT__INIT } /* decompositiontype=initial */, + { 1, 9345, 0, 4, 0, UNI_RJNG } /* rjng */, + { 3, 7128, 5943, 10, 12, UNI_WB__EB } /* wordbreak=glueafterzwj */, + { 2, 1536, 3553, 3, 10, UNI_ETHIOPICEXT } /* inethiopicext */, + { 1, 184, 1576, 2, 18, UNI_GEOMETRICSHAPESEXT } /* isgeometricshapesext */, + { 8, 9647, 9018, 3, 3, UNI_NV__7_SLASH_2 } /* nv=7/2 */, + { 0, 1497, 4732, 9, 15, UNI_TITLE } /* category=titlecaseletter */, + { 0, 8424, 3964, 6, 9, UNI_LATIN1 } /* block=latin1sup */, + { 2, 1362, 3433, 24, 13, UNI_CCC__202 } /* canonicalcombiningclass=attachedbelow */, + { 0, 1845, 0, 22, 0, UNI_INDICNUMBERFORMS } /* commonindicnumberforms */, + { 0, 8886, 8115, 4, 6, UNI_SC__KALI } /* sc=kayahli */, + { 1, 1158, 4718, 3, 14, UNI_TAMILSUP } /* intamilsupplement */, + { 1, 8233, 8149, 7, 7, UNI_SC__MULT } /* script=multani */, + { 1, 5760, 5409, 13, 8, UNI_NV__10000000 } /* numericvalue=10000000 */, + { 0, 184, 7266, 2, 9, UNI_LATINEXTC } /* islatinextc */, + { 242, 9365, 3836, 4, 7, UNI_CPRT } /* scx=cypriot */, + { 0, 9647, 9745, 3, 2, UNI_NV__46 } /* nv=46 */, + { 1, 184, 1758, 3, 20, UNI_CWL } /* ischangeswhenlowercased */, + { 0, 5565, 726, 13, 3, UNI_JG__DAL } /* joininggroup=dal */, + { 0, 8874, 0, 5, 0, UNI_idst_values_index } /* idst= */, + { 5, 2148, 7049, 3, 9, UNI_INSAURASHTRA } /* insaurashtra */, + { 0, 9647, 9017, 3, 4, UNI_NV__17_SLASH_2 } /* nv=17/2 */, + { 1, 5760, 7532, 13, 8, UNI_NV__1_SLASH_40 } /* numericvalue=2.50e-02 */, + { 67, 9620, 339, 3, 2, UNI_LO } /* gc=lo */, + { 4, 9113, 7446, 4, 2, UNI_CCC__25 } /* ccc=25 */, + { 0, 9093, 2021, 4, 22, UNI_TRANSPORTANDMAP } /* blk=transportandmapsymbols */, + { 0, 184, 3552, 2, 17, UNI_ETHIOPICEXTA } /* isethiopicextendeda */, + { 4, 6918, 3820, 10, 16, UNI_LB__CL } /* linebreak=closepunctuation */, + { 3, 6371, 36, 11, 1, UNI_DEP } /* deprecated=t */, + { 0, 8886, 6646, 3, 11, UNI_HMNG } /* sc=pahawhhmong */, + { 14, 9093, 5590, 5, 7, UNI_INBALINESE } /* blk=balinese */, + { 3, 3671, 8568, 17, 4, UNI_LYDI } /* scriptextensions=lydi */, + { 0, 3671, 8652, 17, 6, UNI_WCHO } /* scriptextensions=wancho */, + { 0, 8617, 995, 5, 2, -UNI_TERM } /* term=no */, + { 8, 8424, 567, 6, 2, UNI_NB } /* block=nb */, + { 0, 6828, 4905, 10, 14, UNI_BC__EN } /* bidiclass=europeannumber */, + { 0, 8886, 7338, 3, 9, UNI_SC__PERM } /* sc=oldpermic */, + { 1, 9453, 0, 4, 0, UNI_VAI } /* vaii */, + { 3, 184, 7804, 2, 4, UNI_BUGI } /* isbugi */, + { 0, 5552, 0, 13, 0, UNI_IPAEXT } /* ipaextensions */, + { 3, 9093, 4975, 4, 14, UNI_KANASUP } /* blk=kanasupplement */, + { 6, 5565, 5617, 13, 13, UNI_JG__MALAYALAMLLLA } /* joininggroup=malayalamllla */, + { 0, 3671, 9421, 17, 4, UNI_TGLG } /* scriptextensions=tglg */, + { 0, 8233, 8502, 7, 6, UNI_GOTH } /* script=gothic */, + { 0, 9093, 1999, 4, 22, UNI_MODIFIERLETTERS } /* blk=spacingmodifierletters */, + { 7, 9946, 6, 3, 1, UNI_SD } /* issd */, + { 0, 2779, 0, 19, 0, UNI_MONGOLIANSUP } /* mongoliansupplement */, + { 2, 7812, 0, 4, 0, UNI_DUPL } /* dupl */, + { 0, 184, 2779, 2, 9, UNI_MONG } /* ismongolian */, + { 0, 4705, 8624, 4, 4, UNI_TELU } /* istelugu */, + { 7, 9659, 0, 3, 0, UNI_ri_values_index } /* ri= */, + { 515, 8886, 2930, 3, 4, UNI_CHER } /* sc=cher */, + { 6, 117, 6, 3, 2, UNI_INIDC } /* inidc */, + { 0, 9113, 7558, 4, 2, UNI_CCC__13 } /* ccc=13 */, + { 2, 184, 8142, 2, 4, UNI_MARC } /* ismarc */, + { 0, 8065, 0, 7, 0, UNI_ELBA } /* elbasan */, + { 0, 8406, 995, 6, 2, -UNI_XPOSIXALPHA } /* alpha=no */, + { 0, 9093, 1576, 4, 15, UNI_GEOMETRICSHAPES } /* blk=geometricshapes */, + { 49, 1933, 1, 22, 1, -UNI_LOE } /* logicalorderexception=n */, + { 0, 8424, 6243, 6, 12, UNI_INOLDHUNGARIAN } /* block=oldhungarian */, + { 8, 184, 8177, 2, 7, UNI_NB } /* isnoblock */, + { 5, 184, 630, 3, 29, UNI_CJKEXTE } /* iscjkunifiedideographsextensione */, + { 1, 8424, 3416, 6, 17, UNI_ALCHEMICAL } /* block=alchemicalsymbols */, + { 34, 9725, 3362, 3, 18, UNI_VO__TR } /* vo=transformedrotated */, + { 0, 2085, 0, 18, 0, UNI_CYRILLICSUP } /* cyrillicsupplement */, + { 0, 9093, 3110, 4, 18, UNI_GEORGIANSUP } /* blk=georgiansupplement */, + { 73, 8424, 1030, 7, 5, UNI_INCOPTIC } /* block=coptic */, + { 1, 9113, 9521, 4, 3, UNI_CCC__BR } /* ccc=222 */, + { 0, 8886, 7118, 3, 10, UNI_WARA } /* sc=warangciti */, + { 1, 3868, 3218, 16, 18, UNI_ZP } /* generalcategory=paragraphseparator */, + { 0, 6828, 5603, 10, 3, UNI_BC__RLO } /* bidiclass=rlo */, + { 1, 3868, 5591, 16, 13, UNI_ZL } /* generalcategory=lineseparator */, + { 84, 1362, 8212, 24, 7, UNI_CCC__1 } /* canonicalcombiningclass=overlay */, + { 0, 7128, 4801, 10, 2, UNI_WB__SQ } /* wordbreak=sq */, + { 0, 184, 1622, 2, 23, UNI_LATINEXTADDITIONAL } /* islatinextendedadditional */, + { 0, 6003, 0, 5, 0, UNI_JOINC } /* joinc */, + { 9, 4297, 0, 7, 0, UNI_BRAI } /* braille */, + { 0, 2142, 7304, 4, 7, UNI_INNABATAEAN } /* innabataean */, + { 2, 8424, 3772, 6, 11, UNI_BOPOMOFOEXT } /* block=bopomofoext */, + { 145, 8886, 6690, 3, 4, UNI_SORA } /* sc=sora */, + { 54, 8424, 7900, 6, 8, UNI_KANAEXTA } /* block=kanaexta */, + { 5, 1188, 0, 26, 0, UNI_KATAKANAEXT } /* katakanaphoneticextensions */, + { 5, 2106, 9773, 21, 2, UNI_GCB__XX } /* graphemeclusterbreak=xx */, + { 28, 6005, 1387, 3, 9, UNI_CJKSYMBOLS } /* incjksymbols */, + { 2, 341, 0, 2, 0, UNI_PE } /* pe */, + { 1, 9629, 5952, 3, 3, UNI_LB__ZWJ } /* lb=zwj */, + { 0, 9049, 7159, 4, 3, UNI_AGE__5 } /* age=5.0 */, + { 1, 4705, 8945, 3, 4, UNI_TAKR } /* istakri */, + { 11, 9093, 8023, 4, 7, UNI_CJKEXTC } /* blk=cjkextc */, + { 5, 5979, 36, 12, 1, UNI_IDEO } /* ideographic=t */, + { 34, 9629, 4687, 3, 15, UNI_LB__OP } /* lb=openpunctuation */, + { 1, 9620, 4387, 3, 14, UNI_SC } /* gc=currencysymbol */, + { 0, 9629, 340, 3, 2, UNI_LB__OP } /* lb=op */, + { 0, 8562, 0, 6, 0, UNI_LYCI } /* lycian */, + { 4, 184, 837, 2, 11, UNI_PHONETICEXT } /* isphoneticext */, + { 6, 6885, 3901, 3, 15, UNI_HALFANDFULLFORMS } /* ishalfandfullforms */, + { 98, 5565, 5682, 13, 13, UNI_JG__MANICHAEANTAW } /* joininggroup=manichaeantaw */, + { 0, 8886, 7365, 3, 4, UNI_PAUC } /* sc=pauc */, + { 4, 9365, 6602, 4, 4, UNI_NAND } /* scx=nand */, + { 2, 5760, 9517, 13, 2, UNI_NV__42 } /* numericvalue=42 */, + { 71, 9620, 341, 3, 2, UNI_PE } /* gc=pe */, + { 0, 9946, 6992, 3, 6, UNI_SOGD } /* issogdian */, + { 1, 6888, 36, 10, 1, UNI_DIA } /* diacritic=t */, + { 1, 3671, 7812, 17, 8, UNI_DUPL } /* scriptextensions=duployan */, + { 27, 9365, 0, 4, 0, UNI_scx_values_index } /* scx= */, + { 12, 184, 8562, 2, 6, UNI_LYCI } /* islycian */, + { 39, 9193, 5394, 4, 2, UNI_LB__H2 } /* hst=lv */, + { 0, 9602, 8864, 3, 5, -UNI_DI } /* di=false */, + { 2, 4597, 0, 15, 0, UNI_MISCPICTOGRAPHS } /* miscpictographs */, + { 0, 8233, 9417, 7, 4, UNI_TFNG } /* script=tfng */, + { 16, 184, 8894, 2, 5, UNI_LIMB } /* islimbu */, + { 1, 8580, 8864, 6, 5, -UNI__PERL_NCHAR } /* nchar=false */, + { 0, 4267, 0, 4, 0, UNI_BAMU } /* bamu */, + { 2, 5760, 7716, 13, 8, UNI_NV__3_SLASH_4 } /* numericvalue=7.50e-01 */, + { 2, 6591, 0, 11, 0, UNI_MYANMAREXTB } /* myanmarextb */, + { 1, 3248, 26, 6, 1, UNI_XPOSIXSPACE } /* space=y */, + { 0, 6005, 2986, 4, 16, UNI_COPTICEPACTNUMBERS } /* incopticepactnumbers */, + { 0, 3128, 9734, 18, 3, UNI_IDSB } /* idsbinaryoperator=yes */, + { 0, 184, 2627, 2, 19, UNI_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumsup */, + { 2, 7796, 0, 8, 0, UNI_BASS } /* bassavah */, + { 0, 8233, 3020, 7, 10, UNI_SC__DEVA } /* script=devanagari */, + { 12, 8424, 4204, 6, 16, UNI_SYRIACSUP } /* block=syriacsupplement */, + { 0, 6918, 6968, 10, 10, UNI_LB__NS } /* linebreak=nonstarter */, + { 0, 5760, 8376, 13, 6, UNI_NV__500000 } /* numericvalue=500000 */, + { 24, 1362, 3441, 24, 5, UNI_CCC__B } /* canonicalcombiningclass=below */, + { 32, 6918, 42, 10, 2, UNI_LB__CJ } /* linebreak=cj */, + { 0, 6015, 36, 12, 1, UNI_JT__T } /* joiningtype=t */, + { 0, 7128, 34, 10, 2, UNI_WB__EX } /* wordbreak=ex */, + { 256, 3948, 25, 3, 1, UNI_INVS } /* invs */, + { 2, 184, 3837, 3, 15, UNI_CYPRIOTSYLLABARY } /* iscypriotsyllabary */, + { 1, 7018, 7724, 10, 3, UNI_IN__8 } /* presentin=8.0 */, + { 0, 5565, 4562, 13, 5, UNI_JG__SADHE } /* joininggroup=sadhe */, + { 128, 2708, 3758, 4, 14, UNI_ARABICSUP } /* inarabicsupplement */, + { 1, 8233, 4297, 7, 7, UNI_BRAI } /* script=braille */, + { 0, 9093, 2232, 4, 6, UNI_YIJING } /* blk=yijing */, + { 0, 184, 1, 3, 1, UNI_CN } /* iscn */, + { 160, 6828, 37, 10, 2, UNI_BC__EN } /* bidiclass=en */, + { 129, 9093, 2085, 4, 8, UNI_INCYRILLIC } /* blk=cyrillic */, + { 0, 9093, 2948, 4, 18, UNI_HALFMARKS } /* blk=combininghalfmarks */, + { 4, 9365, 9425, 4, 4, UNI_THAI } /* scx=thai */, + { 3, 9781, 9892, 6, 9, UNI__PERL_QUOTEMETA } /* _perl_quotemeta */, + { 132, 3501, 0, 17, 0, UNI_CYRILLICEXTA } /* cyrillicextendeda */, + { 2, 9608, 3, 3, 1, UNI_EA__F } /* ea=f */, + { 129, 21, 8114, 2, 7, UNI_KALI } /* inkayahli */, + { 0, 6567, 4951, 4, 2, UNI_INMIAO } /* inmiao */, + { 5, 9457, 0, 4, 0, UNI_WCHO } /* wcho */, + { 0, 9593, 2373, 3, 11, UNI_BC__L } /* bc=lefttoright */, + { 0, 5565, 9596, 13, 3, UNI_JG__BEH } /* joininggroup=beh */, + { 4, 1188, 0, 8, 0, UNI_KANA } /* katakana */, + { 38, 8886, 8929, 3, 5, UNI_OSGE } /* sc=osage */, + { 1, 9093, 8114, 4, 7, UNI_KALI } /* blk=kayahli */, + { 0, 6918, 533, 10, 2, UNI_LB__NS } /* linebreak=ns */, + { 0, 8424, 2353, 6, 20, UNI_ININSCRIPTIONALPAHLAVI } /* block=inscriptionalpahlavi */, + { 0, 9093, 8934, 4, 5, UNI_INRUNIC } /* blk=runic */, + { 0, 1362, 8817, 24, 2, UNI_CCC__34 } /* canonicalcombiningclass=34 */, + { 113, 8233, 9069, 7, 4, UNI_SC__ARMN } /* script=armn */, + { 202, 4092, 0, 16, 0, UNI_MISCMATHSYMBOLSB } /* miscmathsymbolsb */, + { 0, 8406, 9734, 6, 3, UNI_XPOSIXALPHA } /* alpha=yes */, + { 1, 1362, 8467, 25, 5, UNI_CCC__130 } /* canonicalcombiningclass=ccc130 */, + { 9, 3671, 2930, 17, 4, UNI_CHER } /* scriptextensions=cher */, + { 0, 9623, 8689, 3, 5, UNI_JG__ALAPH } /* jg=alaph */, + { 0, 4462, 8864, 15, 5, -UNI_GREXT } /* graphemeextend=false */, + { 0, 1362, 9530, 24, 3, UNI_CCC__AL } /* canonicalcombiningclass=228 */, + { 301, 9093, 8568, 4, 6, UNI_INLYDIAN } /* blk=lydian */, + { 1, 9623, 5718, 3, 3, UNI_JG__WAW } /* jg=waw */, + { 0, 184, 660, 3, 29, UNI_CJKEXTF } /* iscjkunifiedideographsextensionf */, + { 72, 5578, 0, 13, 0, UNI_KANAEXTA } /* kanaextendeda */, + { 129, 9113, 8445, 4, 3, UNI_CCC__107 } /* ccc=107 */, + { 8, 6231, 39, 12, 2, UNI_XPOSIXDIGIT } /* numerictype=de */, + { 0, 9365, 57, 4, 2, UNI_YI } /* scx=yi */, + { 28, 7128, 697, 10, 2, UNI_WB__MN } /* wordbreak=mn */, + { 2, 8170, 0, 7, 0, UNI_nfkdqc_values_index } /* nfkdqc= */, + { 1, 1289, 0, 25, 0, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* symbolsandpictographsexta */, + { 6, 2204, 9310, 3, 3, UNI_OSGE } /* isosge */, + { 6, 184, 1030, 3, 3, UNI_COPT } /* iscopt */, + { 5, 8424, 1338, 6, 24, UNI_ARABICPFB } /* block=arabicpresentationformsb */, + { 90, 9093, 1622, 4, 23, UNI_LATINEXTADDITIONAL } /* blk=latinextendedadditional */, + { 19, 9623, 2127, 3, 21, UNI_JG__HANIFIROHINGYAKINNAYA } /* jg=hanifirohingyakinnaya */, + { 20, 3293, 1, 3, 41, UNI_UCASEXT } /* inunifiedcanadianaboriginalsyllabicsextended */, + { 73, 6005, 5860, 3, 11, UNI_CHESSSYMBOLS } /* inchesssymbols */, + { 3, 7128, 495, 10, 2, UNI_WB__NU } /* wordbreak=nu */, + { 104, 5760, 8388, 13, 3, UNI_NV__700 } /* numericvalue=700 */, + { 46, 8874, 3, 5, 1, -UNI_IDST } /* idst=f */, + { 1, 6816, 1531, 3, 22, UNI_BYZANTINEMUSIC } /* inbyzantinemusicalsymbols */, + { 0, 8886, 8527, 4, 5, UNI_SC__KTHI } /* sc=kaithi */, + { 0, 9093, 4220, 4, 16, UNI_TANGUTCOMPONENTS } /* blk=tangutcomponents */, + { 0, 5435, 26, 13, 1, UNI_BIDIM } /* bidimirrored=y */, + { 1, 2232, 0, 6, 0, UNI_YIJING } /* yijing */, + { 3, 9620, 27, 3, 2, UNI_LOWERCASELETTER } /* gc=ll */, + { 1, 3671, 7796, 17, 8, UNI_BASS } /* scriptextensions=bassavah */, + { 3, 1911, 2293, 22, 20, UNI_INSC__CONSONANTPLACEHOLDER } /* indicsyllabiccategory=consonantplaceholder */, + { 0, 4717, 0, 15, 0, UNI_TAMILSUP } /* tamilsupplement */, + { 19, 9093, 6646, 4, 11, UNI_INPAHAWHHMONG } /* blk=pahawhhmong */, + { 51, 9113, 7747, 4, 2, UNI_CCC__28 } /* ccc=28 */, + { 0, 9113, 8437, 5, 4, UNI_CCC__10 } /* ccc=ccc10 */, + { 0, 8424, 921, 6, 18, UNI_INVS } /* block=variationselectors */, + { 5, 2409, 0, 4, 0, UNI_MONG } /* mong */, + { 1, 3254, 995, 18, 2, -UNI_RI } /* regionalindicator=no */, + { 0, 1977, 0, 22, 0, UNI_nchar_values_index } /* noncharactercodepoint= */, + { 2, 184, 1824, 3, 21, UNI_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatideographssup */, + { 1, 8424, 6171, 6, 12, UNI_MATHALPHANUM } /* block=mathalphanum */, + { 4, 8884, 0, 5, 0, UNI_insc_values_index } /* insc= */, + { 0, 9593, 2190, 3, 21, UNI_BC__PDI } /* bc=popdirectionalisolate */, + { 14, 9647, 7700, 3, 8, UNI_NV__2_SLASH_3 } /* nv=6.67e-01 */, + { 24, 8424, 6267, 6, 8, UNI_PHAISTOS } /* block=phaistos */, + { 0, 8424, 8240, 6, 7, UNI_INSHARADA } /* block=sharada */, + { 3, 9093, 2893, 4, 19, UNI_SUPARROWSC } /* blk=supplementalarrowsc */, + { 12, 184, 8058, 2, 7, UNI_DSRT } /* isdeseret */, + { 4, 9383, 1647, 4, 21, UNI_SHORTHANDFORMATCONTROLS } /* inshorthandformatcontrols */, + { 19, 6918, 9753, 10, 2, UNI_LB__B2 } /* linebreak=b2 */, + { 4, 8886, 8939, 3, 5, UNI_SC__TALE } /* sc=taile */, + { 0, 3671, 9101, 17, 4, UNI_BUHD } /* scriptextensions=buhd */, + { 7, 9365, 7118, 4, 10, UNI_WARA } /* scx=warangciti */, + { 139, 8886, 6246, 3, 4, UNI_HUNG } /* sc=hung */, + { 0, 8886, 9229, 3, 4, UNI_SC__LINB } /* sc=linb */, + { 8, 9731, 34, 3, 2, UNI_WB__EX } /* wb=ex */, + { 0, 9959, 8326, 4, 5, UNI_ZZZZ } /* isunknown */, + { 49, 1257, 0, 2, 0, UNI_UPPERCASELETTER } /* lu */, + { 1, 8886, 9213, 3, 4, UNI_LANA } /* sc=lana */, + { 2, 4580, 393, 3, 2, UNI_INMRO } /* inmro */, + { 5, 1158, 8290, 3, 6, UNI_INTAITHAM } /* intaitham */, + { 322, 8086, 995, 7, 2, -UNI_GRBASE } /* grbase=no */, + { 9, 3620, 0, 4, 0, UNI_MANI } /* mani */, + { 23, 7332, 0, 4, 0, UNI_ITAL } /* ital */, + { 0, 8233, 8282, 7, 7, UNI_SC__TGLG } /* script=tagalog */, + { 0, 9593, 3074, 3, 18, UNI_BC__FSI } /* bc=firststrongisolate */, + { 0, 184, 1192, 2, 4, UNI_KANA } /* iskana */, + { 0, 8886, 6901, 6, 7, UNI_KHAR } /* sc=kharoshthi */, + { 0, 7025, 7435, 3, 2, UNI_IN__11 } /* in=11 */, + { 4, 5085, 4177, 4, 11, UNI_MATHOPERATORS } /* inmathoperators */, + { 27, 9093, 5017, 4, 14, UNI_LATINEXTC } /* blk=latinextendedc */, + { 65, 3128, 0, 17, 0, UNI_IDSB } /* idsbinaryoperator */, + { 0, 9093, 2064, 4, 14, UNI_CJKRADICALSSUP } /* blk=cjkradicalssup */, + { 33, 9121, 8864, 4, 5, -UNI_CWL } /* cwl=false */, + { 3, 5213, 9734, 14, 3, UNI_NFCQC__Y } /* nfcquickcheck=yes */, + { 0, 1362, 7723, 24, 2, UNI_CCC__18 } /* canonicalcombiningclass=18 */, + { 0, 6005, 115, 4, 23, UNI_DIACRITICALS } /* incombiningdiacriticalmarks */, + { 0, 184, 1030, 3, 5, UNI_COPT } /* iscoptic */, + { 0, 8233, 9233, 7, 4, UNI_LISU } /* script=lisu */, + { 0, 8412, 995, 6, 2, -UNI_BIDIC } /* bidic=no */, + { 6, 3671, 8929, 17, 5, UNI_OSGE } /* scriptextensions=osage */, + { 11, 2106, 70, 21, 2, UNI_GCB__PP } /* graphemeclusterbreak=pp */, + { 66, 9909, 468, 3, 10, UNI_P } /* ispunctuation */, + { 15, 9177, 0, 4, 0, UNI_HANO } /* hano */, + { 1, 9093, 3308, 4, 18, UNI_SMALLKANAEXT } /* blk=smallkanaextension */, + { 11, 6194, 6979, 3, 9, UNI_INOLDPERSIAN } /* inoldpersian */, + { 7, 9608, 9461, 3, 4, UNI_EA__W } /* ea=wide */, + { 2, 8233, 9081, 7, 4, UNI_AVST } /* script=avst */, + { 2, 6005, 2950, 4, 16, UNI_HALFMARKS } /* incombininghalfmarks */, + { 144, 21, 8562, 2, 6, UNI_INLYCIAN } /* inlycian */, + { 3, 3671, 9301, 17, 4, UNI_ORKH } /* scriptextensions=orkh */, + { 0, 5760, 8376, 13, 3, UNI_NV__500 } /* numericvalue=500 */, + { 0, 5085, 330, 4, 19, UNI_MATHOPERATORS } /* inmathematicaloperators */, + { 1, 9647, 7756, 3, 8, UNI_NV__7_SLASH_8 } /* nv=8.75e-01 */, + { 9, 9093, 689, 4, 9, UNI_INCUNEIFORM } /* blk=cuneiform */, + { 2, 8332, 9082, 3, 3, UNI_AVST } /* isavst */, + { 1, 9313, 995, 4, 2, -UNI_PCM } /* pcm=no */, + { 0, 9623, 87, 3, 2, UNI_JG__HE } /* jg=he */, + { 21, 6828, 4284, 12, 13, UNI_BC__BN } /* bidiclass=boundaryneutral */, + { 3, 1779, 0, 21, 0, UNI_CWT } /* changeswhentitlecased */, + { 0, 3671, 9473, 17, 4, UNI_YI } /* scriptextensions=yiii */, + { 33, 6948, 0, 10, 0, UNI_MISCARROWS } /* miscarrows */, + { 268, 21, 7248, 2, 9, UNI_INKHUDAWADI } /* inkhudawadi */, + { 38, 5565, 9656, 13, 3, UNI_JG__REH } /* joininggroup=reh */, + { 24, 8233, 8944, 7, 5, UNI_SC__TAKR } /* script=takri */, + { 66, 8886, 6243, 3, 12, UNI_HUNG } /* sc=oldhungarian */, + { 0, 0, 0, 42, 0, UNI_UCASEXT } /* unifiedcanadianaboriginalsyllabicsextended */, + { 0, 9153, 881, 4, 1, UNI_GCB__V } /* gcb=v */, + { 0, 8233, 4946, 7, 4, UNI_CHAM } /* script=cham */, + { 0, 9093, 1162, 4, 26, UNI_HALFANDFULLFORMS } /* blk=halfwidthandfullwidthforms */, + { 1, 8424, 8303, 6, 7, UNI_INTIBETAN } /* block=tibetan */, + { 66, 8685, 995, 4, 2, -UNI_XPOSIXXDIGIT } /* hex=no */, + { 65, 9629, 9759, 3, 2, UNI_LB__H3 } /* lb=h3 */, + { 13, 7916, 0, 8, 0, UNI_MAHJ } /* mahajani */, + { 184, 9731, 18, 3, 2, UNI_RI } /* wb=ri */, + { 2, 184, 3603, 2, 17, UNI_LETTERLIKESYMBOLS } /* isletterlikesymbols */, + { 0, 4778, 58, 3, 4, UNI_UIDEO } /* isuideo */, + { 289, 8640, 995, 6, 2, -UNI_XPOSIXUPPER } /* upper=no */, + { 0, 9933, 3248, 7, 5, UNI_XPOSIXSPACE } /* isxperlspace */, + { 0, 4627, 8904, 15, 5, UNI_NFCQC__M } /* nfkcquickcheck=maybe */, + { 0, 9093, 831, 4, 6, UNI_ARROWS } /* blk=arrows */, + { 1, 9113, 2733, 4, 2, UNI_CCC__1 } /* ccc=ov */, + { 1, 7058, 0, 10, 0, UNI_SMALLFORMS } /* smallforms */, + { 1, 184, 1036, 2, 2, UNI_CASEDLETTER } /* islc */, + { 1, 2204, 3201, 3, 17, UNI_ORNAMENTALDINGBATS } /* isornamentaldingbats */, + { 14, 4387, 0, 15, 0, UNI_CURRENCYSYMBOLS } /* currencysymbols */, + { 0, 9623, 6120, 3, 3, UNI_JG__NYA } /* jg=nya */, + { 0, 6231, 0, 12, 0, UNI_nt_values_index } /* numerictype= */, + { 12, 8604, 0, 5, 0, UNI_QMARK } /* qmark */, + { 38, 184, 2274, 3, 19, UNI_PC } /* isconnectorpunctuation */, + { 1, 9647, 8981, 3, 4, UNI_NV__1_SLASH_40 } /* nv=1/40 */, + { 2, 9349, 0, 4, 0, UNI_ROHG } /* rohg */, + { 3, 9903, 62, 6, 5, UNI_XPOSIXGRAPH } /* xposixgraph */, + { 42, 8886, 6690, 3, 11, UNI_SORA } /* sc=sorasompeng */, + { 0, 6828, 0, 11, 0, UNI_BC__B } /* bidiclass=b */, + { 59, 9093, 9217, 4, 3, UNI_INLAO } /* blk=lao */, + { 0, 8424, 2590, 7, 18, UNI_COUNTINGROD } /* block=countingrodnumerals */, + { 5, 8233, 8894, 7, 4, UNI_SC__LIMB } /* script=limb */, + { 4, 184, 5283, 2, 14, UNI_PHONETICEXTSUP } /* isphoneticextsup */, + { 0, 9365, 8699, 4, 5, UNI_BATK } /* scx=batak */, + { 0, 3671, 4267, 17, 5, UNI_BAMU } /* scriptextensions=bamum */, + { 1, 3248, 0, 6, 0, UNI_wspace_values_index } /* space= */, + { 2, 9093, 719, 4, 16, UNI_ENCLOSEDALPHANUM } /* blk=enclosedalphanum */, + { 0, 8424, 8550, 6, 6, UNI_INLEPCHA } /* block=lepcha */, + { 1, 9623, 5936, 3, 7, UNI_JG__SEMKATH } /* jg=semkath */, + { 1, 5339, 1059, 15, 2, UNI_SB__SE } /* sentencebreak=sep */, + { 0, 8854, 9433, 5, 4, UNI_DASH } /* dash=true */, + { 26, 2148, 0, 21, 0, UNI_PRTI } /* inscriptionalparthian */, + { 2, 8886, 8859, 3, 5, UNI_SC__DOGR } /* sc=dogra */, + { 0, 5565, 6099, 13, 12, UNI_JG__MALAYALAMNNA } /* joininggroup=malayalamnna */, + { 1, 3671, 2085, 17, 8, UNI_CYRL } /* scriptextensions=cyrillic */, + { 0, 7025, 9449, 3, 4, UNI_IN__12_DOT_1 } /* in=v121 */, + { 1, 3671, 8944, 17, 4, UNI_TAKR } /* scriptextensions=takr */, + { 0, 9365, 6183, 4, 12, UNI_MEND } /* scx=mendekikakui */, + { 79, 8332, 2393, 3, 2, UNI_ANY } /* isany */, + { 5, 8520, 3, 6, 1, -UNI_JOINC } /* joinc=f */, + { 0, 9093, 7068, 4, 10, UNI_SUPARROWSA } /* blk=suparrowsa */, + { 18, 3671, 9233, 17, 4, UNI_LISU } /* scriptextensions=lisu */, + { 0, 184, 7844, 2, 8, UNI_GUJR } /* isgujarati */, + { 3, 184, 7852, 2, 8, UNI_GURU } /* isgurmukhi */, + { 64, 1497, 1855, 9, 2, UNI_CN } /* category=cn */, + { 2, 3671, 2779, 17, 9, UNI_MONG } /* scriptextensions=mongolian */, + { 24, 4672, 0, 15, 0, UNI_SARB } /* oldsoutharabian */, + { 1, 9153, 5258, 4, 11, UNI_GCB__SM } /* gcb=spacingmark */, + { 0, 8955, 8864, 4, 5, -UNI_IDC } /* idc=false */, + { 6, 9365, 6898, 4, 4, UNI_KHAR } /* scx=khar */, + { 0, 3671, 7860, 17, 4, UNI_HIRA } /* scriptextensions=hira */, + { 12, 9365, 7365, 4, 9, UNI_PAUC } /* scx=paucinhau */, + { 1, 8424, 3210, 6, 8, UNI_DINGBATS } /* block=dingbats */, + { 16, 8424, 218, 7, 32, UNI_DIACRITICALSEXT } /* block=combiningdiacriticalmarksextended */, + { 128, 6194, 125, 3, 2, UNI_OCR } /* inocr */, + { 24, 3002, 5678, 18, 4, UNI_DT__NONE } /* decompositiontype=none */, + { 1, 1497, 1844, 9, 2, UNI_PC } /* category=pc */, + { 0, 184, 9089, 2, 4, UNI_BHKS } /* isbhks */, + { 7, 5325, 9734, 14, 3, UNI_QMARK } /* quotationmark=yes */, + { 0, 9093, 5552, 4, 6, UNI_IPAEXT } /* blk=ipaext */, + { 0, 9620, 4829, 3, 5, UNI_XPOSIXDIGIT } /* gc=digit */, + { 0, 1497, 3218, 9, 18, UNI_ZP } /* category=paragraphseparator */, + { 40, 184, 9775, 2, 2, UNI_ZL } /* iszl */, + { 0, 8424, 3980, 6, 16, UNI_LINEARBIDEOGRAMS } /* block=linearbideograms */, + { 0, 9623, 7948, 3, 8, UNI_JG__SWASHKAF } /* jg=swashkaf */, + { 1, 4627, 9734, 15, 3, UNI_NFKCQC__Y } /* nfkcquickcheck=yes */, + { 0, 8233, 2333, 7, 4, UNI_SC__GLAG } /* script=glag */, + { 1, 8406, 8864, 6, 5, -UNI_XPOSIXALPHA } /* alpha=false */, + { 39, 3038, 0, 18, 0, UNI_ETHIOPICSUP } /* ethiopicsupplement */, + { 2, 4582, 0, 15, 0, UNI_MERC } /* meroiticcursive */, + { 6, 184, 6869, 3, 9, UNI_COMPATJAMO } /* iscompatjamo */, + { 0, 8871, 33, 3, 2, UNI_SB__SE } /* sb=se */, + { 5, 9113, 7611, 4, 2, UNI_CCC__14 } /* ccc=14 */, + { 0, 5339, 34, 14, 2, UNI_SB__EX } /* sentencebreak=ex */, + { 1, 3671, 5311, 17, 14, UNI_PHLP } /* scriptextensions=psalterpahlavi */, + { 1, 1497, 878, 9, 10, UNI_CO } /* category=privateuse */, + { 0, 7025, 7724, 3, 3, UNI_IN__8 } /* in=8.0 */, + { 0, 6828, 835, 10, 2, UNI_BC__WS } /* bidiclass=ws */, + { 24, 184, 5907, 2, 12, UNI_ETHIOPICEXTA } /* isethiopicexta */, + { 3, 7128, 9773, 10, 2, UNI_WB__XX } /* wordbreak=xx */, + { 1, 9365, 9353, 4, 4, UNI_RUNR } /* scx=runr */, + { 0, 8424, 837, 6, 11, UNI_PHONETICEXT } /* block=phoneticext */, + { 0, 9113, 8467, 5, 4, UNI_CCC__13 } /* ccc=ccc13 */, + { 0, 3398, 9734, 18, 3, UNI_VS } /* variationselector=yes */, + { 0, 3416, 0, 17, 0, UNI_ALCHEMICAL } /* alchemicalsymbols */, + { 27, 8233, 1845, 7, 6, UNI_SC__ZYYY } /* script=common */, + { 1, 8616, 0, 7, 0, UNI_STERM } /* sterm=t */, + { 0, 21, 3418, 4, 8, UNI_ALCHEMICAL } /* inalchemical */, + { 36, 8886, 8121, 3, 7, UNI_SC__LINA } /* sc=lineara */, + { 16, 7018, 9695, 10, 3, UNI_IN__5 } /* presentin=v50 */, + { 0, 8424, 0, 6, 42, UNI_UCASEXT } /* block=unifiedcanadianaboriginalsyllabicsextended */, + { 0, 8233, 8859, 7, 4, UNI_SC__DOGR } /* script=dogr */, + { 24, 5513, 8864, 13, 5, -UNI_GRBASE } /* graphemebase=false */, + { 43, 8424, 7788, 6, 8, UNI_INBALINESE } /* block=balinese */, + { 1, 8886, 7812, 3, 4, UNI_SC__DUPL } /* sc=dupl */, + { 1, 9093, 414, 4, 32, UNI_INIDC } /* blk=ideographicdescriptioncharacters */, + { 7, 8886, 9361, 3, 4, UNI_SARB } /* sc=sarb */, + { 0, 4705, 7957, 3, 3, UNI_TAGB } /* istagb */, + { 0, 9049, 7495, 4, 1, UNI_AGE__7 } /* age=7 */, + { 4, 8233, 9345, 7, 4, UNI_RJNG } /* script=rjng */, + { 11, 6580, 0, 11, 0, UNI_MYANMAREXTA } /* myanmarexta */, + { 3, 1497, 2192, 9, 2, UNI_PD } /* category=pd */, + { 3, 9365, 9117, 4, 4, UNI_CPRT } /* scx=cprt */, + { 5, 1790, 0, 5, 0, UNI_TITLE } /* title */, + { 0, 5835, 0, 5, 0, UNI_BIDIC } /* bidic */, + { 2, 7018, 9548, 10, 3, UNI_IN__3 } /* presentin=3.0 */, + { 0, 3868, 6635, 16, 11, UNI_SO } /* generalcategory=othersymbol */, + { 0, 9629, 4631, 3, 2, UNI_LB__QU } /* lb=qu */, + { 32, 8430, 0, 4, 0, UNI_CARI } /* cari */, + { 13, 8338, 8864, 7, 5, -UNI_XPOSIXSPACE } /* wspace=false */, + { 2, 7018, 7507, 10, 2, UNI_IN__12 } /* presentin=12 */, + { 1, 184, 8709, 2, 5, UNI_BUHD } /* isbuhid */, + { 13, 9731, 7293, 3, 9, UNI_WB__MB } /* wb=midnumlet */, + { 28, 1136, 8864, 26, 5, -UNI_DI } /* defaultignorablecodepoint=false */, + { 14, 8219, 8864, 7, 5, -UNI_PATSYN } /* patsyn=false */, + { 68, 1867, 0, 22, 0, UNI_DIACRITICALSFORSYMBOLS } /* diacriticalsforsymbols */, + { 0, 9365, 8072, 4, 7, UNI_ELYM } /* scx=elymaic */, + { 1, 5017, 0, 14, 0, UNI_LATINEXTC } /* latinextendedc */, + { 0, 9237, 26, 4, 1, UNI_LOE } /* loe=y */, + { 0, 8886, 9217, 3, 3, UNI_LAO } /* sc=lao */, + { 0, 9365, 2212, 5, 6, UNI_SINH } /* scx=sinhala */, + { 3, 7025, 7507, 3, 2, UNI_IN__12 } /* in=12 */, + { 0, 8586, 26, 6, 1, UNI_NFCQC__Y } /* nfcqc=y */, + { 11, 9093, 8261, 4, 7, UNI_INSOYOMBO } /* blk=soyombo */, + { 0, 8424, 2148, 6, 21, UNI_ININSCRIPTIONALPARTHIAN } /* block=inscriptionalparthian */, + { 1, 184, 1411, 3, 23, UNI_DIACRITICALSFORSYMBOLS } /* iscombiningmarksforsymbols */, + { 1, 9313, 9734, 4, 3, UNI_PCM } /* pcm=yes */, + { 1, 8233, 9269, 7, 4, UNI_SC__MYMR } /* script=mymr */, + { 0, 1158, 4718, 3, 4, UNI_INTAMIL } /* intamil */, + { 0, 8233, 9173, 7, 4, UNI_SC__GURU } /* script=guru */, + { 1, 3868, 1410, 16, 13, UNI_M } /* generalcategory=combiningmark */, + { 0, 184, 8508, 2, 5, UNI_GREXT } /* isgrext */, + { 84, 1713, 0, 22, 0, UNI_cwcf_values_index } /* changeswhencasefolded= */, + { 281, 2453, 3, 20, 1, -UNI_TERM } /* terminalpunctuation=f */, + { 0, 1450, 2178, 5, 5, UNI_GREEKEXT } /* ingreekext */, + { 0, 8424, 2646, 6, 19, UNI_JAMOEXTA } /* block=hanguljamoextendeda */, + { 0, 7420, 36, 8, 1, UNI_IDS } /* idstart=t */, + { 1, 4642, 995, 15, 2, UNI_NFKDQC__N } /* nfkdquickcheck=no */, + { 72, 9093, 8037, 4, 7, UNI_CJKEXTE } /* blk=cjkexte */, + { 1, 8051, 26, 7, 1, UNI_COMPEX } /* compex=y */, + { 5, 7419, 0, 4, 0, UNI_XIDS } /* xids */, + { 0, 1844, 0, 2, 0, UNI_PC } /* pc */, + { 4, 1362, 9515, 24, 3, UNI_CCC__214 } /* canonicalcombiningclass=214 */, + { 0, 21, 8652, 2, 6, UNI_INWANCHO } /* inwancho */, + { 46, 8886, 9405, 3, 4, UNI_TALU } /* sc=talu */, + { 0, 8635, 995, 5, 2, -UNI_IDEO } /* ideo=no */, + { 14, 21, 3603, 2, 17, UNI_LETTERLIKESYMBOLS } /* inletterlikesymbols */, + { 84, 9093, 837, 4, 28, UNI_PHONETICEXTSUP } /* blk=phoneticextensionssupplement */, + { 0, 5339, 721, 14, 2, UNI_SB__CL } /* sentencebreak=cl */, + { 9, 5565, 2561, 13, 9, UNI_JG__YEHBARREE } /* joininggroup=yehbarree */, + { 51, 8580, 0, 6, 0, UNI_nchar_values_index } /* nchar= */, + { 0, 8424, 8275, 6, 7, UNI_SUPPUAB } /* block=suppuab */, + { 2, 6005, 4864, 3, 13, UNI_CJKCOMPATFORMS } /* incjkcompatforms */, + { 1, 9620, 1156, 3, 2, UNI_PO } /* gc=po */, + { 6, 3002, 4801, 18, 6, UNI_DT__SQR } /* decompositiontype=square */, + { 194, 262, 0, 2, 0, UNI_SM } /* sm */, + { 1, 3671, 2837, 18, 8, UNI_SUND } /* scriptextensions=sundanese */, + { 0, 184, 4792, 2, 15, UNI_ZANB } /* iszanabazarsquare */, + { 1, 9365, 9265, 4, 4, UNI_MTEI } /* scx=mtei */, + { 44, 3398, 36, 18, 1, UNI_VS } /* variationselector=t */, + { 37, 8233, 7964, 7, 8, UNI_TFNG } /* script=tifinagh */, + { 13, 3772, 0, 11, 0, UNI_BOPOMOFOEXT } /* bopomofoext */, + { 3, 467, 0, 11, 0, UNI_P } /* punctuation */, + { 31, 9647, 8364, 3, 4, UNI_NV__4000 } /* nv=4000 */, + { 71, 184, 435, 2, 5, UNI__PERL_NCHAR } /* isnchar */, + { 16, 184, 8840, 3, 4, UNI_XPOSIXCNTRL } /* iscntrl */, + { 0, 3671, 8924, 17, 5, UNI_ORYA } /* scriptextensions=oriya */, + { 10, 6690, 0, 11, 0, UNI_SORA } /* sorasompeng */, + { 8, 8886, 9493, 3, 4, UNI_ZZZZ } /* sc=zzzz */, + { 24, 7018, 9578, 10, 3, UNI_IN__6_DOT_3 } /* presentin=6.3 */, + { 139, 6918, 8100, 10, 6, UNI_LB__HY } /* linebreak=hyphen */, + { 0, 8424, 2798, 6, 19, UNI_OTTOMANSIYAQNUMBERS } /* block=ottomansiyaqnumbers */, + { 3, 9647, 8352, 3, 6, UNI_NV__216000 } /* nv=216000 */, + { 1, 2106, 3254, 21, 17, UNI_RI } /* graphemeclusterbreak=regionalindicator */, + { 0, 9365, 6243, 4, 12, UNI_HUNG } /* scx=oldhungarian */, + { 3, 9647, 8394, 3, 3, UNI_NV__800 } /* nv=800 */, + { 27, 9093, 5311, 4, 14, UNI_INPSALTERPAHLAVI } /* blk=psalterpahlavi */, + { 3, 9946, 107, 3, 5, UNI_S } /* issymbol */, + { 66, 9093, 2984, 4, 6, UNI_INCOPTIC } /* blk=coptic */, + { 0, 9093, 5617, 4, 9, UNI_INMALAYALAM } /* blk=malayalam */, + { 0, 8854, 0, 5, 0, UNI_dash_values_index } /* dash= */, + { 0, 9093, 3552, 4, 16, UNI_ETHIOPICEXT } /* blk=ethiopicextended */, + { 4, 184, 2065, 3, 13, UNI_CJKRADICALSSUP } /* iscjkradicalssup */, + { 1, 9049, 7507, 4, 4, UNI_AGE__12 } /* age=12.0 */, + { 0, 9253, 0, 4, 0, UNI_MIAO } /* miao */, + { 40, 8886, 8568, 3, 6, UNI_LYDI } /* sc=lydian */, + { 0, 8233, 9305, 7, 4, UNI_SC__ORYA } /* script=orya */, + { 0, 3671, 8538, 17, 4, UNI_KHOJ } /* scriptextensions=khoj */, + { 0, 4447, 9461, 15, 4, UNI_EA__W } /* eastasianwidth=wide */, + { 27, 3671, 9065, 17, 4, UNI_ARMI } /* scriptextensions=armi */, + { 0, 9093, 3756, 4, 9, UNI_ARABICSUP } /* blk=arabicsup */, + { 0, 8424, 2893, 6, 19, UNI_SUPARROWSC } /* block=supplementalarrowsc */, + { 0, 184, 1411, 3, 12, UNI_M } /* iscombiningmark */, + { 1, 6015, 6291, 12, 12, UNI_JT__R } /* joiningtype=rightjoining */, + { 0, 9393, 0, 4, 0, UNI_SYRC } /* syrc */, + { 0, 8332, 7774, 4, 6, UNI_ARMN } /* isarmenian */, + { 0, 5565, 8658, 13, 6, UNI_JG__YUDHHE } /* joininggroup=yudhhe */, + { 1, 9093, 7980, 4, 8, UNI_INUGARITIC } /* blk=ugaritic */, + { 1, 9647, 9503, 3, 3, UNI_NV__1_SLASH_9 } /* nv=1/9 */, + { 5, 9049, 9713, 4, 3, UNI_AGE__6_DOT_3 } /* age=v63 */, + { 0, 6918, 495, 10, 2, UNI_LB__NU } /* linebreak=nu */, + { 1, 6885, 2647, 3, 18, UNI_JAMOEXTA } /* ishanguljamoextendeda */, + { 0, 9365, 3038, 4, 4, UNI_ETHI } /* scx=ethi */, + { 3, 1532, 0, 1, 0, UNI_Z } /* z */, + { 29, 9365, 9069, 4, 4, UNI_ARMN } /* scx=armn */, + { 0, 21, 6767, 2, 11, UNI_YISYLLABLES } /* inyisyllables */, + { 0, 9953, 67, 3, 4, UNI_VSSUP } /* isvssup */, + { 101, 9365, 2484, 4, 4, UNI_MAND } /* scx=mand */, + { 0, 9093, 8003, 5, 6, UNI_INBENGALI } /* blk=bengali */, + { 1, 8886, 2741, 3, 19, UNI_MERO } /* sc=meroitichieroglyphs */, + { 36, 8233, 9261, 7, 3, UNI_MRO } /* script=mro */, + { 135, 9093, 2253, 4, 20, UNI_INANATOLIANHIEROGLYPHS } /* blk=anatolianhieroglyphs */, + { 0, 9647, 8394, 3, 5, UNI_NV__80000 } /* nv=80000 */, + { 1, 7239, 0, 9, 0, UNI_QAAI } /* inherited */, + { 8, 9093, 7302, 4, 9, UNI_INNABATAEAN } /* blk=nabataean */, + { 3, 2021, 0, 15, 0, UNI_TRANSPORTANDMAP } /* transportandmap */, + { 144, 184, 6382, 2, 11, UNI_DOMINO } /* isdominotiles */, + { 0, 629, 0, 30, 0, UNI_CJKEXTE } /* cjkunifiedideographsextensione */, + { 1, 184, 4597, 2, 15, UNI_MISCPICTOGRAPHS } /* ismiscpictographs */, + { 0, 9647, 7748, 3, 8, UNI_NV__17_SLASH_2 } /* nv=8.50e+00 */, + { 0, 6828, 102, 10, 2, UNI_BC__ET } /* bidiclass=et */, + { 3, 9365, 8610, 4, 6, UNI_RJNG } /* scx=rejang */, + { 4, 5565, 3916, 13, 16, UNI_JG__HANIFIROHINGYAPA } /* joininggroup=hanifirohingyapa */, + { 0, 184, 7788, 2, 4, UNI_BALI } /* isbali */, + { 2, 6338, 1, 11, 1, -UNI_XPOSIXALPHA } /* alphabetic=n */, + { 1, 184, 2985, 3, 17, UNI_COPTICEPACTNUMBERS } /* iscopticepactnumbers */, + { 2, 9049, 9581, 4, 3, UNI_AGE__7 } /* age=7.0 */, + { 0, 8233, 2212, 8, 3, UNI_SC__SINH } /* script=sinh */, + { 1, 7884, 0, 8, 0, UNI_JAMOEXTB } /* jamoextb */, + { 0, 8233, 7049, 8, 9, UNI_SAUR } /* script=saurashtra */, + { 0, 1497, 4687, 9, 15, UNI_PS } /* category=openpunctuation */, + { 0, 184, 2532, 2, 4, UNI_BRAH } /* isbrah */, + { 4, 5835, 8864, 12, 5, -UNI_BIDIC } /* bidicontrol=false */, + { 4, 8424, 7302, 6, 9, UNI_INNABATAEAN } /* block=nabataean */, + { 0, 9093, 921, 4, 18, UNI_INVS } /* blk=variationselectors */, + { 4, 9093, 9057, 4, 4, UNI_INAHOM } /* blk=ahom */, + { 230, 3671, 3772, 17, 4, UNI_BOPO } /* scriptextensions=bopo */, + { 0, 3671, 0, 17, 0, UNI_scx_values_index } /* scriptextensions= */, + { 2, 8424, 4975, 6, 14, UNI_KANASUP } /* block=kanasupplement */, + { 1, 21, 5604, 2, 13, UNI_LOWSURROGATES } /* inlowsurrogates */, + { 0, 9599, 3, 3, 1, -UNI_CI } /* ci=f */, + { 9, 9093, 1003, 4, 11, UNI_ENCLOSEDCJK } /* blk=enclosedcjk */, + { 3, 3254, 8864, 18, 5, -UNI_RI } /* regionalindicator=false */, + { 134, 9093, 8894, 4, 5, UNI_INLIMBU } /* blk=limbu */, + { 0, 8886, 8191, 3, 7, UNI_OLCK } /* sc=olchiki */, + { 6, 9623, 6087, 3, 12, UNI_JG__MALAYALAMNGA } /* jg=malayalamnga */, + { 5, 9093, 6939, 4, 2, UNI_INVS } /* blk=vs */, + { 2, 9113, 8725, 5, 4, UNI_CCC__16 } /* ccc=ccc16 */, + { 3, 9093, 6027, 4, 5, UNI_INKHMER } /* blk=khmer */, + { 2, 3671, 7118, 17, 10, UNI_WARA } /* scriptextensions=warangciti */, + { 15, 8160, 781, 4, 20, UNI_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsup */, + { 0, 3671, 8324, 17, 7, UNI_ZZZZ } /* scriptextensions=unknown */, + { 3, 9365, 6898, 4, 10, UNI_KHAR } /* scx=kharoshthi */, + { 321, 9909, 0, 3, 0, UNI_P } /* isp */, + { 1, 4705, 9414, 3, 3, UNI_TAVT } /* istavt */, + { 40, 9093, 8944, 4, 5, UNI_INTAKRI } /* blk=takri */, + { 2, 6885, 1363, 3, 3, UNI_HANO } /* ishano */, + { 0, 2212, 2021, 4, 4, UNI_INHATRAN } /* inhatran */, + { 12, 7995, 0, 7, 0, UNI_AVST } /* avestan */, + { 48, 9909, 5492, 7, 5, UNI_POSIXALNUM } /* isposixalnum */, + { 0, 6949, 3469, 4, 15, UNI_AGHB } /* iscaucasianalbanian */, + { 38, 9647, 9025, 3, 4, UNI_NV__3_SLASH_20 } /* nv=3/20 */, + { 0, 184, 4175, 2, 13, UNI_MATHOPERATORS } /* ismathoperators */, + { 29, 5760, 7459, 13, 2, UNI_NV__21 } /* numericvalue=21 */, + { 3, 1497, 206, 9, 2, UNI_PI } /* category=pi */, + { 0, 9946, 17, 3, 1, UNI_SO } /* isso */, + { 0, 184, 5786, 2, 13, UNI_VERTICALFORMS } /* isverticalforms */, + { 2, 8960, 9433, 4, 4, UNI_IDS } /* ids=true */, + { 4, 9093, 7148, 4, 10, UNI_YIRADICALS } /* blk=yiradicals */, + { 0, 9049, 7446, 4, 1, UNI_AGE__2 } /* age=2 */, + { 4, 4447, 0, 15, 0, UNI_ea_values_index } /* eastasianwidth= */, + { 2, 8051, 9433, 7, 4, UNI_COMPEX } /* compex=true */, + { 0, 509, 0, 20, 0, UNI_CJK } /* cjkunifiedideographs */, + { 2, 8424, 865, 6, 28, UNI_SUPPUAA } /* block=supplementaryprivateuseareaa */, + { 0, 7018, 7435, 10, 2, UNI_IN__11 } /* presentin=11 */, + { 3, 8886, 9261, 3, 4, UNI_MRO } /* sc=mroo */, + { 17, 9093, 42, 4, 26, UNI_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatibilityideographs */, + { 0, 8884, 2768, 5, 10, UNI_INSC__TONELETTER } /* insc=toneletter */, + { 12, 9767, 0, 2, 0, UNI_CASEDLETTER } /* l& */, + { 0, 5565, 8964, 13, 5, UNI_JG__ZHAIN } /* joininggroup=zhain */, + { 1, 9959, 1152, 5, 4, UNI_ANY } /* isunicode */, + { 0, 9093, 7844, 4, 8, UNI_INGUJARATI } /* blk=gujarati */, + { 0, 184, 3502, 3, 16, UNI_CYRILLICEXTA } /* iscyrillicextendeda */, + { 273, 6194, 8192, 3, 6, UNI_OLCK } /* inolchiki */, + { 7, 184, 8107, 2, 7, UNI_KNDA } /* iskannada */, + { 36, 9093, 1867, 4, 12, UNI_DIACRITICALS } /* blk=diacriticals */, + { 2, 9125, 8864, 4, 5, -UNI_CWT } /* cwt=false */, + { 129, 1933, 995, 22, 2, -UNI_LOE } /* logicalorderexception=no */, + { 2, 9093, 4268, 5, 7, UNI_BAMUMSUP } /* blk=bamumsup */, + { 4, 9365, 7812, 4, 4, UNI_DUPL } /* scx=dupl */, + { 24, 9113, 8463, 4, 3, UNI_CCC__129 } /* ccc=129 */, + { 1, 8640, 36, 6, 1, UNI_XPOSIXUPPER } /* upper=t */, + { 1, 8424, 4220, 6, 16, UNI_TANGUTCOMPONENTS } /* block=tangutcomponents */, + { 88, 8424, 7148, 6, 10, UNI_YIRADICALS } /* block=yiradicals */, + { 1, 3671, 2484, 17, 4, UNI_MAND } /* scriptextensions=mand */, + { 0, 8233, 7892, 7, 4, UNI_SC__JAVA } /* script=java */, + { 16, 9620, 32, 3, 2, UNI__PERL_SURROGATE } /* gc=cs */, + { 2, 8424, 779, 6, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsup */, + { 5, 8424, 2665, 6, 19, UNI_JAMOEXTB } /* block=hanguljamoextendedb */, + { 0, 9225, 0, 4, 0, UNI_LINA } /* lina */, + { 1, 4705, 8297, 3, 6, UNI_TAVT } /* istaiviet */, + { 0, 4705, 7965, 3, 7, UNI_TFNG } /* istifinagh */, + { 0, 1386, 0, 10, 0, UNI_CJKSYMBOLS } /* cjksymbols */, + { 0, 8424, 6948, 6, 10, UNI_MISCARROWS } /* block=miscarrows */, + { 0, 8510, 0, 4, 0, UNI_ext_values_index } /* ext= */, + { 0, 6918, 2368, 10, 2, UNI_LB__HL } /* linebreak=hl */, + { 0, 9093, 4108, 4, 16, UNI_MYANMAREXTA } /* blk=myanmarextendeda */, + { 32, 9365, 1146, 5, 3, UNI_SORA } /* scx=sora */, + { 1, 7128, 495, 10, 7, UNI_WB__NU } /* wordbreak=numeric */, + { 0, 9093, 7797, 5, 7, UNI_INBASSAVAH } /* blk=bassavah */, + { 1, 8424, 446, 6, 18, UNI_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbols */, + { 12, 9623, 6785, 3, 3, UNI_JG__FEH } /* jg=feh */, + { 35, 3671, 78, 17, 4, UNI_ARAB } /* scriptextensions=arab */, + { 7, 8886, 2608, 3, 19, UNI_EGYP } /* sc=egyptianhieroglyphs */, + { 0, 9365, 9413, 4, 4, UNI_TAVT } /* scx=tavt */, + { 1, 6798, 0, 10, 0, UNI_ARABICEXTA } /* arabicexta */, + { 41, 9623, 9641, 3, 3, UNI_JG__MIM } /* jg=mim */, + { 32, 8424, 8268, 6, 7, UNI_SUPPUAA } /* block=suppuaa */, + { 0, 4402, 0, 15, 0, UNI_PD } /* dashpunctuation */, + { 0, 9629, 96, 3, 10, UNI_LB__AL } /* lb=alphabetic */, + { 0, 9365, 9429, 4, 4, UNI_TIBT } /* scx=tibt */, + { 3, 9647, 8376, 3, 4, UNI_NV__5000 } /* nv=5000 */, + { 1, 8568, 0, 6, 0, UNI_LYDI } /* lydian */, + { 2, 9647, 9739, 3, 2, UNI_NV__39 } /* nv=39 */, + { 0, 8899, 9433, 5, 4, UNI_MATH } /* math=true */, + { 6, 3868, 4140, 16, 16, UNI_PO } /* generalcategory=otherpunctuation */, + { 298, 184, 9217, 2, 3, UNI_LAO } /* islao */, + { 0, 8160, 1005, 4, 9, UNI_ENCLOSEDCJK } /* inenclosedcjk */, + { 0, 9365, 4267, 4, 4, UNI_BAMU } /* scx=bamu */, + { 2, 9731, 9611, 3, 3, UNI_WB__EB } /* wb=ebg */, + { 0, 7018, 7660, 10, 3, UNI_IN__6 } /* presentin=6.0 */, + { 3, 8510, 8864, 4, 5, -UNI_EXT } /* ext=false */, + { 14, 8233, 9481, 7, 4, UNI_ZANB } /* script=zanb */, + { 0, 8886, 7804, 3, 4, UNI_SC__BUGI } /* sc=bugi */, + { 0, 5085, 6161, 4, 10, UNI_INMASARAMGONDI } /* inmasaramgondi */, + { 0, 8616, 995, 6, 2, -UNI_STERM } /* sterm=no */, + { 1, 5085, 480, 4, 29, UNI_MATHALPHANUM } /* inmathematicalalphanumericsymbols */, + { 1, 1911, 8331, 22, 7, UNI_INSC__VISARGA } /* indicsyllabiccategory=visarga */, + { 0, 6888, 9433, 10, 4, UNI_DIA } /* diacritic=true */, + { 0, 5339, 125, 14, 2, UNI_LB__CR } /* sentencebreak=cr */, + { 4, 8886, 3020, 3, 4, UNI_SC__DEVA } /* sc=deva */, + { 1, 8233, 6992, 8, 3, UNI_SC__SOGD } /* script=sogd */, + { 0, 184, 149, 3, 34, UNI_DIACRITICALSSUP } /* iscombiningdiacriticalmarkssupplement */, + { 0, 8205, 0, 7, 0, UNI_OSMA } /* osmanya */, + { 7, 8424, 2065, 7, 13, UNI_CJKRADICALSSUP } /* block=cjkradicalssup */, + { 30, 2513, 0, 19, 0, UNI_ANCIENTGREEKNUMBERS } /* ancientgreeknumbers */, + { 49, 9608, 9, 3, 2, UNI_EA__NA } /* ea=na */, + { 12, 9626, 6515, 4, 10, UNI_JT__L } /* jt=leftjoining */, + { 2, 7048, 0, 4, 0, UNI_SAUR } /* saur */, + { 274, 6005, 43, 3, 15, UNI_CJKCOMPAT } /* incjkcompatibility */, + { 0, 8886, 2202, 4, 3, UNI_SC__KALI } /* sc=kali */, + { 0, 9623, 5381, 3, 14, UNI_JG__HAMZAONHEHGOAL } /* jg=tehmarbutagoal */, + { 0, 9623, 9245, 3, 4, UNI_JG__MEEM } /* jg=meem */, + { 0, 9593, 2817, 3, 19, UNI_BC__RLO } /* bc=righttoleftoverride */, + { 1, 6816, 6839, 3, 9, UNI_BOXDRAWING } /* inboxdrawing */, + { 0, 9093, 7365, 4, 9, UNI_INPAUCINHAU } /* blk=paucinhau */, + { 5, 3002, 45, 18, 3, UNI_DT__COM } /* decompositiontype=com */, + { 0, 184, 9281, 2, 4, UNI_NEWA } /* isnewa */, + { 9, 2684, 5747, 19, 13, UNI_HST__NA } /* hangulsyllabletype=notapplicable */, + { 2, 9093, 2741, 4, 19, UNI_MERO } /* blk=meroitichieroglyphs */, + { 10, 184, 43, 3, 35, UNI_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatibilityideographssupplement */, + { 0, 8233, 9213, 7, 4, UNI_LANA } /* script=lana */, + { 4, 8424, 1530, 6, 23, UNI_BYZANTINEMUSIC } /* block=byzantinemusicalsymbols */, + { 1, 8332, 27, 3, 2, UNI_ALL } /* isall */, + { 1, 1536, 3553, 3, 15, UNI_ETHIOPICEXT } /* inethiopicextended */, + { 12, 5967, 0, 4, 0, UNI_HEBR } /* hebr */, + { 8, 8424, 7884, 6, 8, UNI_JAMOEXTB } /* block=jamoextb */, + { 1, 9365, 3620, 4, 4, UNI_MANI } /* scx=mani */, + { 0, 5339, 0, 14, 0, UNI_sb_values_index } /* sentencebreak= */, + { 3, 8424, 5896, 7, 11, UNI_CYRILLICEXTC } /* block=cyrillicextc */, + { 84, 6885, 2666, 3, 18, UNI_JAMOEXTB } /* ishanguljamoextendedb */, + { 0, 1084, 36, 26, 1, UNI_CWKCF } /* changeswhennfkccasefolded=t */, + { 0, 5565, 6334, 13, 4, UNI_JG__NOON } /* joininggroup=noon */, + { 0, 9365, 382, 4, 4, UNI_EGYP } /* scx=egyp */, + { 0, 1362, 18, 24, 1, UNI_CCC__R } /* canonicalcombiningclass=r */, + { 7, 9153, 18, 4, 2, UNI_RI } /* gcb=ri */, + { 1, 8424, 2608, 6, 19, UNI_INEGYPTIANHIEROGLYPHS } /* block=egyptianhieroglyphs */, + { 1, 8684, 0, 5, 0, UNI_ahex_values_index } /* ahex= */, + { 0, 3293, 7981, 3, 7, UNI_INUGARITIC } /* inugaritic */, + { 0, 9261, 0, 4, 0, UNI_MRO } /* mroo */, + { 0, 184, 3227, 2, 9, UNI_Z } /* isseparator */, + { 0, 659, 0, 30, 0, UNI_CJKEXTF } /* cjkunifiedideographsextensionf */, + { 0, 9365, 2127, 4, 4, UNI_HAN } /* scx=hani */, + { 2, 8424, 6027, 6, 12, UNI_KHMERSYMBOLS } /* block=khmersymbols */, + { 5, 5760, 8981, 13, 3, UNI_NV__1_SLASH_4 } /* numericvalue=1/4 */, + { 0, 9153, 5394, 4, 2, UNI_LB__H2 } /* gcb=lv */, + { 0, 8233, 2253, 7, 20, UNI_HLUW } /* script=anatolianhieroglyphs */, + { 0, 9049, 9677, 4, 3, UNI_AGE__2_DOT_1 } /* age=v21 */, + { 1, 6316, 8864, 11, 5, -UNI_IDC } /* idcontinue=false */, + { 0, 3868, 1844, 16, 2, UNI_PC } /* generalcategory=pc */, + { 0, 6918, 4835, 10, 14, UNI_LB__CR } /* linebreak=carriagereturn */, + { 1, 9113, 8802, 4, 2, UNI_CCC__31 } /* ccc=31 */, + { 4, 8871, 8198, 3, 7, UNI_SB__LE } /* sb=oletter */, + { 0, 9620, 7098, 3, 10, UNI_CN } /* gc=unassigned */, + { 0, 9153, 262, 4, 2, UNI_GCB__SM } /* gcb=sm */, + { 1, 9121, 0, 3, 0, UNI_CWL } /* cwl */, + { 0, 9629, 4835, 3, 14, UNI_LB__CR } /* lb=carriagereturn */, + { 0, 9365, 9337, 4, 4, UNI_QAAI } /* scx=qaai */, + { 0, 117, 415, 3, 31, UNI_INIDC } /* inideographicdescriptioncharacters */, + { 89, 184, 5435, 2, 5, UNI_BIDIM } /* isbidim */, + { 1, 8886, 9265, 3, 4, UNI_MTEI } /* sc=mtei */, + { 0, 9647, 9509, 3, 3, UNI_NV__2_SLASH_5 } /* nv=2/5 */, + { 0, 9093, 4657, 4, 15, UNI_NARB } /* blk=oldnortharabian */, + { 0, 4826, 26, 9, 1, UNI_XPOSIXXDIGIT } /* hexdigit=y */, + { 0, 5760, 5409, 13, 7, UNI_NV__1000000 } /* numericvalue=1000000 */, + { 12, 3128, 995, 18, 2, -UNI_IDSB } /* idsbinaryoperator=no */, + { 0, 1003, 0, 27, 0, UNI_ENCLOSEDCJK } /* enclosedcjklettersandmonths */, + { 0, 184, 5872, 3, 11, UNI_CYRILLICEXTA } /* iscyrillicexta */, + { 0, 9093, 4387, 4, 15, UNI_CURRENCYSYMBOLS } /* blk=currencysymbols */, + { 2, 5565, 6788, 13, 10, UNI_JG__AFRICANQAF } /* joininggroup=africanqaf */, + { 7, 184, 2532, 2, 6, UNI_BRAH } /* isbrahmi */, + { 25, 831, 0, 6, 0, UNI_ARROWS } /* arrows */, + { 0, 9904, 1812, 5, 5, UNI_POSIXUPPER } /* posixupper */, + { 0, 8406, 9433, 6, 4, UNI_XPOSIXALPHA } /* alpha=true */, + { 2, 4849, 36, 14, 1, UNI_CI } /* caseignorable=t */, + { 0, 3128, 8864, 18, 5, -UNI_IDSB } /* idsbinaryoperator=false */, + { 32, 9946, 0, 3, 0, UNI_S } /* iss */, + { 0, 4618, 2335, 4, 18, UNI_GLAGOLITICSUP } /* inglagoliticsupplement */, + { 96, 8233, 7860, 7, 4, UNI_SC__HIRA } /* script=hira */, + { 2, 9620, 25, 3, 1, UNI_S } /* gc=s */, + { 3, 7025, 7660, 3, 3, UNI_IN__6 } /* in=6.0 */, + { 3, 3964, 0, 6, 0, UNI_LATIN1 } /* latin1 */, + { 1, 8424, 4864, 7, 13, UNI_CJKCOMPATFORMS } /* block=cjkcompatforms */, + { 0, 3671, 9205, 17, 4, UNI_KNDA } /* scriptextensions=knda */, + { 0, 8886, 8149, 3, 4, UNI_SC__MULT } /* sc=mult */, + { 97, 8424, 8191, 6, 7, UNI_OLCK } /* block=olchiki */, + { 3, 9093, 4961, 4, 14, UNI_HIGHSURROGATES } /* blk=highsurrogates */, + { 0, 5760, 7683, 13, 2, UNI_NV__26 } /* numericvalue=26 */, + { 2, 5565, 9381, 13, 4, UNI_JG__SHIN } /* joininggroup=shin */, + { 1, 5565, 7392, 13, 9, UNI_JG__SYRIACWAW } /* joininggroup=syriacwaw */, + { 1, 6885, 1600, 3, 5, UNI_HANG } /* ishangul */, + { 56, 1713, 995, 22, 2, -UNI_CWCF } /* changeswhencasefolded=no */, + { 4, 9093, 7374, 4, 9, UNI_INSAMARITAN } /* blk=samaritan */, + { 1, 8424, 3308, 6, 18, UNI_SMALLKANAEXT } /* block=smallkanaextension */, + { 0, 184, 8568, 2, 4, UNI_LYDI } /* islydi */, + { 0, 1362, 1701, 24, 2, UNI_CCC__BR } /* canonicalcombiningclass=br */, + { 20, 8685, 1, 4, 1, -UNI_XPOSIXXDIGIT } /* hex=n */, + { 0, 6949, 9, 4, 16, UNI_CANS } /* iscanadianaboriginal */, + { 0, 7788, 0, 4, 0, UNI_BALI } /* bali */, + { 244, 8233, 4657, 7, 15, UNI_NARB } /* script=oldnortharabian */, + { 10, 184, 1387, 3, 9, UNI_CJKSYMBOLS } /* iscjksymbols */, + { 0, 8886, 8128, 3, 7, UNI_MAKA } /* sc=makasar */, + { 1, 7025, 7502, 3, 1, UNI_IN__8 } /* in=8 */, + { 0, 5045, 0, 14, 0, UNI_LATINEXTE } /* latinextendede */, + { 0, 3236, 26, 18, 1, UNI__PERL_PATWS } /* patternwhitespace=y */, + { 34, 8233, 0, 7, 0, UNI_sc_values_index } /* script= */, + { 6, 9904, 7128, 5, 4, UNI_POSIXWORD } /* posixword */, + { 0, 184, 2931, 3, 3, UNI_CHER } /* ischer */, + { 326, 184, 510, 3, 19, UNI_CJK } /* iscjkunifiedideographs */, + { 0, 9946, 8241, 3, 6, UNI_SHRD } /* issharada */, + { 2, 3002, 3852, 18, 3, UNI_DT__FIN } /* decompositiontype=fin */, + { 26, 9629, 5297, 3, 14, UNI_LB__PO } /* lb=postfixnumeric */, + { 0, 8424, 5786, 6, 13, UNI_VERTICALFORMS } /* block=verticalforms */, + { 2, 8424, 9233, 6, 4, UNI_LISU } /* block=lisu */, + { 1, 3002, 6195, 18, 12, UNI_DT__NONCANON } /* decompositiontype=noncanonical */, + { 0, 9623, 5, 3, 1, UNI_JG__E } /* jg=e */, + { 0, 3180, 0, 3, 0, UNI_ALL } /* all */, + { 56, 9313, 1, 4, 1, -UNI_PCM } /* pcm=n */, + { 0, 8424, 6898, 6, 10, UNI_INKHAROSHTHI } /* block=kharoshthi */, + { 0, 7108, 9433, 10, 4, UNI_XPOSIXUPPER } /* uppercase=true */, + { 4, 3671, 9285, 17, 4, UNI_NKO } /* scriptextensions=nkoo */, + { 0, 8100, 8864, 7, 5, -UNI_HYPHEN } /* hyphen=false */, + { 2, 8886, 2148, 3, 21, UNI_PRTI } /* sc=inscriptionalparthian */, + { 261, 8844, 3, 5, 1, -UNI_CWCF } /* cwcf=f */, + { 4, 8424, 6838, 6, 10, UNI_BOXDRAWING } /* block=boxdrawing */, + { 0, 8886, 8610, 3, 6, UNI_RJNG } /* sc=rejang */, + { 0, 206, 0, 2, 0, UNI_PI } /* pi */, + { 0, 184, 183, 2, 34, UNI_MISCPICTOGRAPHS } /* ismiscellaneoussymbolsandpictographs */, + { 36, 9093, 7275, 4, 9, UNI_LATINEXTD } /* blk=latinextd */, + { 0, 9185, 0, 4, 0, UNI_HMNG } /* hmng */, + { 1, 7128, 7988, 10, 7, UNI_WB__LE } /* wordbreak=aletter */, + { 33, 3398, 1, 18, 1, -UNI_VS } /* variationselector=n */, + { 0, 9237, 0, 4, 0, UNI_loe_values_index } /* loe= */, + { 0, 8424, 3631, 7, 3, UNI_INCHAM } /* block=cham */, + { 0, 7420, 9734, 8, 3, UNI_IDS } /* idstart=yes */, + { 39, 6928, 36, 10, 1, UNI_XPOSIXLOWER } /* lowercase=t */, + { 0, 8886, 18, 6, 1, UNI_KHAR } /* sc=khar */, + { 0, 1482, 3212, 4, 6, UNI_DINGBATS } /* indingbats */, + { 0, 6015, 7, 12, 1, UNI_JT__C } /* joiningtype=c */, + { 12, 3868, 6613, 16, 11, UNI_LO } /* generalcategory=otherletter */, + { 0, 9626, 36, 3, 1, UNI_JT__T } /* jt=t */, + { 0, 2212, 4479, 4, 13, UNI_INHANGUL } /* inhangulsyllables */, + { 12, 5085, 6053, 4, 10, UNI_MAHJONG } /* inmahjongtiles */, + { 0, 3818, 0, 18, 0, UNI_PE } /* isclosepunctuation */, + { 0, 9647, 7428, 3, 8, UNI_NV__1_SLASH_10 } /* nv=1.00e-01 */, + { 0, 8871, 8694, 3, 5, UNI_SB__AT } /* sb=aterm */, + { 33, 9647, 8817, 3, 2, UNI_NV__34 } /* nv=34 */, + { 0, 9593, 5255, 3, 14, UNI_BC__NSM } /* bc=nonspacingmark */, + { 0, 9623, 8889, 3, 5, UNI_JG__KHAPH } /* jg=khaph */, + { 0, 8871, 49, 3, 2, UNI_SB__AT } /* sb=at */, + { 10, 9623, 2551, 3, 19, UNI_JG__BURUSHASKIYEHBARREE } /* jg=burushaskiyehbarree */, + { 0, 8424, 8622, 6, 6, UNI_INTELUGU } /* block=telugu */, + { 0, 1497, 5354, 10, 13, UNI_ZS } /* category=spaceseparator */, + { 0, 6690, 0, 4, 0, UNI_SORA } /* sora */, + { 0, 1362, 8463, 24, 3, UNI_CCC__129 } /* canonicalcombiningclass=129 */, + { 1, 8233, 9429, 7, 4, UNI_TIBT } /* script=tibt */, + { 0, 8424, 2949, 7, 17, UNI_HALFMARKS } /* block=combininghalfmarks */, + { 0, 9093, 8484, 4, 6, UNI_INCHAKMA } /* blk=chakma */, + { 0, 9647, 7540, 3, 8, UNI_NV__20000000 } /* nv=20000000 */, + { 32, 5760, 9569, 13, 3, UNI_NV__5_SLASH_6 } /* numericvalue=5/6 */, + { 0, 184, 5269, 2, 13, UNI_PATSYN } /* ispatternsyntax */, + { 1, 5760, 8364, 13, 6, UNI_NV__400000 } /* numericvalue=400000 */, + { 16, 1158, 8629, 3, 5, UNI_INTHAANA } /* inthaana */, + { 0, 9113, 7691, 4, 2, UNI_CCC__36 } /* ccc=36 */, + { 0, 1057, 36, 27, 1, UNI_PCM } /* prependedconcatenationmark=t */, + { 3, 113, 0, 35, 0, UNI_DIACRITICALSFORSYMBOLS } /* combiningdiacriticalmarksforsymbols */, + { 1, 5760, 7596, 13, 8, UNI_NV__3_SLASH_80 } /* numericvalue=3.75e-02 */, + { 0, 9728, 0, 3, 0, UNI_vs_values_index } /* vs= */, + { 0, 5760, 8352, 13, 6, UNI_NV__216000 } /* numericvalue=216000 */, + { 77, 21, 8121, 2, 7, UNI_INLINEARA } /* inlineara */, + { 1, 7018, 9716, 10, 3, UNI_IN__7 } /* presentin=v70 */, + { 5, 6828, 3272, 10, 18, UNI_BC__RLI } /* bidiclass=righttoleftisolate */, + { 0, 4821, 8864, 14, 5, -UNI_POSIXXDIGIT } /* asciihexdigit=false */, + { 1, 2204, 8920, 3, 4, UNI_OGAM } /* isogham */, + { 17, 9113, 9765, 4, 2, UNI_CCC__8 } /* ccc=kv */, + { 6, 1911, 2966, 22, 18, UNI_INSC__CONSONANTSUBJOINED } /* indicsyllabiccategory=consonantsubjoined */, + { 0, 184, 5487, 2, 13, UNI_XPOSIXDIGIT } /* isdecimalnumber */, + { 0, 6005, 6859, 3, 9, UNI_CJKSTROKES } /* incjkstrokes */, + { 32, 4462, 1, 15, 1, -UNI_GREXT } /* graphemeextend=n */, + { 23, 8233, 6183, 7, 4, UNI_MEND } /* script=mend */, + { 210, 8424, 5045, 6, 14, UNI_LATINEXTE } /* block=latinextendede */, + { 1, 9113, 7502, 4, 1, UNI_CCC__8 } /* ccc=8 */, + { 144, 779, 0, 29, 0, UNI_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsupplement */, + { 1, 8424, 3552, 6, 17, UNI_ETHIOPICEXTA } /* block=ethiopicextendeda */, + { 144, 1482, 4777, 24, 15, UNI_LOE } /* indicpositionalcategory=visualorderleft */, + { 12, 1497, 1532, 9, 1, UNI_Z } /* category=z */, + { 28, 9647, 5409, 3, 5, UNI_NV__10000 } /* nv=10000 */, + { 5, 6816, 4268, 3, 14, UNI_BAMUMSUP } /* inbamumsupplement */, + { 4, 7, 0, 18, 0, UNI_CANS } /* canadianaboriginal */, + { 0, 9365, 6648, 5, 3, UNI_SHAW } /* scx=shaw */, + { 0, 5565, 5692, 13, 3, UNI_JG__TAW } /* joininggroup=taw */, + { 0, 6918, 8324, 10, 7, UNI_LB__XX } /* linebreak=unknown */, + { 68, 9365, 9261, 4, 3, UNI_MRO } /* scx=mro */, + { 15, 48, 0, 1, 0, UNI_P } /* p */, + { 48, 8849, 9433, 5, 4, UNI_CWCM } /* cwcm=true */, + { 0, 9901, 62, 8, 5, UNI_XPOSIXGRAPH } /* isxposixgraph */, + { 1, 5565, 4537, 13, 15, UNI_JG__MANICHAEANGIMEL } /* joininggroup=manichaeangimel */, + { 366, 3868, 106, 16, 6, UNI_S } /* generalcategory=symbol */, + { 0, 9113, 9512, 4, 3, UNI_CCC__202 } /* ccc=202 */, + { 68, 3948, 5787, 3, 12, UNI_VERTICALFORMS } /* inverticalforms */, + { 0, 8598, 36, 6, 1, UNI__PERL_PATWS } /* patws=t */, + { 0, 5760, 9503, 13, 3, UNI_NV__1_SLASH_9 } /* numericvalue=1/9 */, + { 1, 9903, 1812, 6, 5, UNI_XPOSIXUPPER } /* xposixupper */, + { 0, 9113, 9073, 4, 4, UNI_CCC__216 } /* ccc=atar */, + { 257, 1187, 0, 2, 0, UNI_SK } /* sk */, + { 0, 9647, 7564, 3, 8, UNI_NV__1_SLASH_320 } /* nv=3.13e-03 */, + { 2, 6918, 1410, 10, 13, UNI_LB__CM } /* linebreak=combiningmark */, + { 2, 9623, 4044, 3, 16, UNI_JG__MANICHAEANSAMEKH } /* jg=manichaeansamekh */, + { 6, 2273, 0, 20, 0, UNI_PC } /* connectorpunctuation */, + { 6, 1159, 5487, 3, 7, UNI_XPOSIXDIGIT } /* nt=decimal */, + { 8, 9425, 0, 4, 0, UNI_THAI } /* thai */, + { 0, 5565, 4567, 13, 15, UNI_JG__MANICHAEANZAYIN } /* joininggroup=manichaeanzayin */, + { 13, 9093, 976, 4, 17, UNI_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusic */, + { 0, 4821, 3, 14, 1, -UNI_POSIXXDIGIT } /* asciihexdigit=f */, + { 3, 5565, 4028, 13, 16, UNI_JG__MANICHAEANLAMEDH } /* joininggroup=manichaeanlamedh */, + { 2, 5435, 995, 13, 2, -UNI_BIDIM } /* bidimirrored=no */, + { 0, 3146, 0, 18, 0, UNI_PI } /* initialpunctuation */, + { 402, 3868, 2192, 16, 2, UNI_PD } /* generalcategory=pd */, + { 1, 9623, 6135, 3, 12, UNI_JG__MALAYALAMTTA } /* jg=malayalamtta */, + { 74, 117, 447, 3, 31, UNI_IDEOGRAPHICSYMBOLS } /* inideographicsymbolsandpunctuation */, + { 65, 9647, 7540, 3, 4, UNI_NV__2000 } /* nv=2000 */, + { 85, 6991, 0, 7, 0, UNI_SOGD } /* sogdian */, + { 18, 1497, 6613, 9, 11, UNI_LO } /* category=otherletter */, + { 2, 3671, 1146, 18, 3, UNI_SORA } /* scriptextensions=sora */, + { 0, 3671, 382, 17, 4, UNI_EGYP } /* scriptextensions=egyp */, + { 3, 8884, 8704, 5, 5, UNI_INSC__BINDU } /* insc=bindu */, + { 35, 9647, 7732, 3, 8, UNI_NV__5_SLASH_6 } /* nv=8.33e-01 */, + { 0, 2212, 2667, 4, 17, UNI_JAMOEXTB } /* inhanguljamoextendedb */, + { 8, 184, 9249, 2, 4, UNI_MERC } /* ismerc */, + { 0, 5760, 7580, 13, 8, UNI_NV__7_SLASH_2 } /* numericvalue=3.50e+00 */, + { 0, 9093, 7940, 4, 8, UNI_SPECIALS } /* blk=specials */, + { 152, 7025, 9005, 3, 4, UNI_IN__12_DOT_1 } /* in=12.1 */, + { 311, 9365, 8894, 4, 5, UNI_LIMB } /* scx=limbu */, + { 145, 1362, 78, 24, 2, UNI_CCC__AR } /* canonicalcombiningclass=ar */, + { 2, 9093, 2021, 4, 15, UNI_TRANSPORTANDMAP } /* blk=transportandmap */, + { 0, 7419, 3, 9, 1, -UNI_XIDS } /* xidstart=f */, + { 6, 3671, 983, 17, 5, UNI_GREK } /* scriptextensions=greek */, + { 46, 3671, 7239, 17, 9, UNI_QAAI } /* scriptextensions=inherited */, + { 0, 7025, 9704, 3, 3, UNI_IN__6 } /* in=v60 */, + { 0, 4580, 2171, 4, 9, UNI_INMEETEIMAYEK } /* inmeeteimayek */, + { 25, 9623, 5157, 3, 14, UNI_JG__MANICHAEANRESH } /* jg=manichaeanresh */, + { 4, 3671, 2984, 17, 4, UNI_COPT } /* scriptextensions=copt */, + { 0, 4580, 4125, 3, 15, UNI_MYANMAREXTB } /* inmyanmarextendedb */, + { 10, 9946, 1482, 3, 3, UNI_SIND } /* issind */, + { 0, 5565, 6756, 13, 11, UNI_JG__YEHWITHTAIL } /* joininggroup=yehwithtail */, + { 8, 1911, 4342, 22, 15, UNI_INSC__CONSONANTMEDIAL } /* indicsyllabiccategory=consonantmedial */, + { 0, 3868, 6624, 16, 11, UNI_NO } /* generalcategory=othernumber */, + { 0, 184, 3552, 2, 11, UNI_ETHIOPICEXT } /* isethiopicext */, + { 0, 184, 9285, 2, 3, UNI_NKO } /* isnko */, + { 39, 6360, 0, 11, 0, UNI_CASEDLETTER } /* casedletter */, + { 0, 9629, 184, 3, 2, UNI_LB__IS } /* lb=is */, + { 0, 1911, 4919, 22, 14, UNI_INSC__GEMINATIONMARK } /* indicsyllabiccategory=geminationmark */, + { 0, 6988, 0, 10, 0, UNI_SOGO } /* oldsogdian */, + { 1, 184, 5017, 2, 14, UNI_LATINEXTC } /* islatinextendedc */, + { 2, 1362, 8775, 25, 4, UNI_CCC__26 } /* canonicalcombiningclass=ccc26 */, + { 5, 1482, 2479, 24, 14, UNI_INPC__BOTTOMANDRIGHT } /* indicpositionalcategory=bottomandright */, + { 2, 1497, 1156, 9, 2, UNI_PO } /* category=po */, + { 0, 9093, 1264, 4, 25, UNI_SUPERANDSUB } /* blk=superscriptsandsubscripts */, + { 24, 117, 5553, 3, 12, UNI_IPAEXT } /* inipaextensions */, + { 2, 184, 893, 2, 28, UNI_SUPPUAB } /* issupplementaryprivateuseareab */, + { 37, 1497, 9108, 9, 2, UNI_MC } /* category=mc */, + { 0, 7932, 0, 8, 0, UNI_radical_values_index } /* radical= */, + { 0, 382, 0, 4, 0, UNI_EGYP } /* egyp */, + { 0, 4361, 3112, 4, 6, UNI_INGEORGIAN } /* ingeorgian */, + { 0, 5085, 7918, 4, 6, UNI_INMAHAJANI } /* inmahajani */, + { 0, 1924, 9770, 10, 1, UNI_CASEDLETTER } /* category=l_ */, + { 145, 2684, 36, 19, 1, UNI_GCB__T } /* hangulsyllabletype=t */, + { 0, 9193, 6938, 4, 10, UNI_LB__H2 } /* hst=lvsyllable */, + { 1, 3236, 36, 18, 1, UNI__PERL_PATWS } /* patternwhitespace=t */, + { 25, 7248, 0, 9, 0, UNI_SIND } /* khudawadi */, + { 0, 9049, 9, 4, 2, UNI_AGE__NA } /* age=na */, + { 20, 8886, 8303, 3, 7, UNI_TIBT } /* sc=tibetan */, + { 9, 6816, 7805, 3, 7, UNI_INBUGINESE } /* inbuginese */, + { 192, 6005, 600, 3, 29, UNI_CJKEXTD } /* incjkunifiedideographsextensiond */, + { 0, 9605, 45, 3, 6, UNI_DT__COM } /* dt=compat */, + { 4, 3671, 7796, 17, 4, UNI_BASS } /* scriptextensions=bass */, + { 1, 8233, 8310, 7, 7, UNI_SC__TIRH } /* script=tirhuta */, + { 0, 184, 9101, 2, 4, UNI_BUHD } /* isbuhd */, + { 32, 8424, 1599, 6, 6, UNI_INHANGUL } /* block=hangul */, + { 320, 2204, 6980, 4, 8, UNI_XPEO } /* isoldpersian */, + { 0, 2148, 317, 3, 32, UNI_SUPMATHOPERATORS } /* insupplementalmathematicaloperators */, + { 0, 2142, 7312, 3, 8, UNI_INNEWTAILUE } /* innewtailue */, + { 1, 8424, 1264, 6, 25, UNI_SUPERANDSUB } /* block=superscriptsandsubscripts */, + { 0, 9093, 2665, 4, 19, UNI_JAMOEXTB } /* blk=hanguljamoextendedb */, + { 0, 8424, 8526, 6, 6, UNI_INKAITHI } /* block=kaithi */, + { 1, 9213, 0, 4, 0, UNI_LANA } /* lana */, + { 5, 8332, 6800, 4, 8, UNI_ARABICEXTA } /* isarabicexta */, + { 0, 5565, 4012, 13, 16, UNI_JG__MANICHAEANDALETH } /* joininggroup=manichaeandaleth */, + { 158, 3671, 9281, 17, 4, UNI_NEWA } /* scriptextensions=newa */, + { 0, 837, 0, 11, 0, UNI_PHONETICEXT } /* phoneticext */, + { 0, 4372, 0, 15, 0, UNI_CONTROLPICTURES } /* controlpictures */, + { 4, 8233, 4792, 7, 15, UNI_ZANB } /* script=zanabazarsquare */, + { 1, 8424, 3705, 6, 17, UNI_SMALLFORMS } /* block=smallformvariants */, + { 0, 1801, 3, 22, 1, -UNI_CWU } /* changeswhenuppercased=f */, + { 1, 8023, 0, 7, 0, UNI_CJKEXTC } /* cjkextc */, + { 384, 8424, 7221, 6, 9, UNI_EMOTICONS } /* block=emoticons */, + { 4, 9093, 3164, 4, 9, UNI_LATINEXTA } /* blk=latinexta */, + { 58, 4580, 2007, 3, 3, UNI_INMODI } /* inmodi */, + { 0, 8100, 26, 7, 1, UNI_HYPHEN } /* hyphen=y */, + { 0, 8424, 8261, 6, 7, UNI_INSOYOMBO } /* block=soyombo */, + { 14, 3251, 3, 3, 1, -UNI_CE } /* ce=f */, + { 1, 9113, 8475, 4, 3, UNI_CCC__132 } /* ccc=132 */, + { 92, 9301, 0, 4, 0, UNI_ORKH } /* orkh */, + { 27, 9093, 2393, 4, 20, UNI_INNYIAKENGPUACHUEHMONG } /* blk=nyiakengpuachuehmong */, + { 0, 9365, 9045, 4, 4, UNI_ADLM } /* scx=adlm */, + { 2, 21, 8610, 2, 6, UNI_INREJANG } /* inrejang */, + { 2, 8233, 9249, 7, 4, UNI_MERC } /* script=merc */, + { 0, 9629, 6459, 3, 11, UNI_LB__IN } /* lb=inseperable */, + { 2, 9365, 8191, 4, 7, UNI_OLCK } /* scx=olchiki */, + { 0, 9647, 7507, 3, 2, UNI_NV__12 } /* nv=12 */, + { 4, 8628, 0, 6, 0, UNI_THAA } /* thaana */, + { 40, 1362, 8735, 25, 4, UNI_CCC__18 } /* canonicalcombiningclass=ccc18 */, + { 0, 8412, 0, 6, 0, UNI_bidic_values_index } /* bidic= */, + { 58, 9647, 9580, 3, 2, UNI_NV__37 } /* nv=37 */, + { 20, 184, 2893, 2, 19, UNI_SUPARROWSC } /* issupplementalarrowsc */, + { 0, 9593, 3272, 3, 18, UNI_BC__RLI } /* bc=righttoleftisolate */, + { 1, 1691, 5678, 22, 4, UNI_BPT__N } /* bidipairedbrackettype=none */, + { 5, 1362, 8750, 25, 4, UNI_CCC__21 } /* canonicalcombiningclass=ccc21 */, + { 0, 1773, 995, 6, 2, -UNI_CASED } /* cased=no */, + { 3, 7128, 34, 10, 6, UNI_WB__EXTEND } /* wordbreak=extend */, + { 0, 8424, 7194, 6, 9, UNI_ARABICPFB } /* block=arabicpfb */, + { 30, 3002, 3852, 18, 5, UNI_DT__FIN } /* decompositiontype=final */, + { 0, 6918, 34, 10, 2, UNI_LB__EX } /* linebreak=ex */, + { 0, 6828, 5255, 10, 14, UNI_BC__NSM } /* bidiclass=nonspacingmark */, + { 3, 21, 2254, 3, 19, UNI_INANATOLIANHIEROGLYPHS } /* inanatolianhieroglyphs */, + { 11, 8332, 4822, 3, 4, UNI_ASCII } /* isascii */, + { 38, 1362, 9073, 24, 4, UNI_CCC__216 } /* canonicalcombiningclass=atar */, + { 0, 184, 9769, 2, 2, UNI_CASEDLETTER } /* isl_ */, + { 0, 8424, 6051, 6, 7, UNI_MAHJONG } /* block=mahjong */, + { 0, 6005, 2086, 3, 20, UNI_CYRILLICSUP } /* incyrillicsupplementary */, + { 0, 8886, 9337, 3, 4, UNI_SC__QAAI } /* sc=qaai */, + { 4, 9731, 495, 3, 7, UNI_WB__NU } /* wb=numeric */, + { 65, 4705, 4718, 3, 4, UNI_TAML } /* istamil */, + { 17, 6949, 987, 4, 2, UNI_CAKM } /* iscakm */, + { 2, 3671, 9329, 17, 4, UNI_PRTI } /* scriptextensions=prti */, + { 1, 3248, 1, 6, 1, -UNI_XPOSIXSPACE } /* space=n */, + { 0, 6316, 9433, 11, 4, UNI_IDC } /* idcontinue=true */, + { 1, 4080, 0, 10, 0, UNI_SM } /* mathsymbol */, + { 32, 6005, 2931, 3, 17, UNI_CHEROKEESUP } /* incherokeesupplement */, + { 2, 9629, 5953, 3, 2, UNI_LB__WJ } /* lb=wj */, + { 1, 719, 0, 21, 0, UNI_ENCLOSEDALPHANUM } /* enclosedalphanumerics */, + { 0, 2232, 0, 21, 0, UNI_YIJING } /* yijinghexagramsymbols */, + { 45, 9731, 1188, 3, 8, UNI_WB__KA } /* wb=katakana */, + { 0, 8424, 446, 6, 32, UNI_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbolsandpunctuation */, + { 0, 9309, 0, 4, 0, UNI_OSGE } /* osge */, + { 1, 3450, 0, 17, 0, UNI_UCAS } /* canadiansyllabics */, + { 0, 9620, 9108, 3, 2, UNI_MC } /* gc=mc */, + { 1, 9085, 0, 4, 0, UNI_BATK } /* batk */, + { 64, 8424, 5003, 6, 14, UNI_LATINEXTB } /* block=latinextendedb */, + { 225, 3671, 7248, 17, 9, UNI_SIND } /* scriptextensions=khudawadi */, + { 18, 8604, 26, 6, 1, UNI_QMARK } /* qmark=y */, + { 16, 7230, 0, 9, 0, UNI_ext_values_index } /* extender= */, + { 4, 8960, 8864, 4, 5, -UNI_IDS } /* ids=false */, + { 2, 8424, 3110, 6, 11, UNI_GEORGIANSUP } /* block=georgiansup */, + { 1, 2703, 0, 4, 0, UNI_IDST } /* idst */, + { 0, 8424, 4762, 6, 15, UNI_VEDICEXT } /* block=vedicextensions */, + { 209, 5760, 7436, 13, 8, UNI_NV__1_SLASH_9 } /* numericvalue=1.11e-01 */, + { 0, 1911, 1434, 22, 24, UNI_INSC__CONSONANTSUCCEEDINGREPHA } /* indicsyllabiccategory=consonantsucceedingrepha */, + { 5, 5526, 0, 13, 0, UNI_GREEKEXT } /* greekextended */, + { 0, 6194, 8925, 3, 4, UNI_INORIYA } /* inoriya */, + { 0, 3671, 8310, 17, 4, UNI_TIRH } /* scriptextensions=tirh */, + { 21, 184, 9493, 2, 4, UNI_ZZZZ } /* iszzzz */, + { 12, 9620, 3820, 3, 16, UNI_PE } /* gc=closepunctuation */, + { 68, 3236, 8864, 18, 5, -UNI__PERL_PATWS } /* patternwhitespace=false */, + { 0, 3671, 6183, 17, 4, UNI_MEND } /* scriptextensions=mend */, + { 257, 1866, 0, 2, 0, UNI_SD } /* sd */, + { 0, 9365, 9177, 4, 4, UNI_HANO } /* scx=hano */, + { 0, 9093, 4717, 4, 8, UNI_TAMILSUP } /* blk=tamilsup */, + { 0, 5760, 7500, 13, 8, UNI_NV__3_SLASH_16 } /* numericvalue=1.88e-01 */, + { 1, 1362, 3433, 24, 17, UNI_WB__EB } /* canonicalcombiningclass=attachedbelowleft */, + { 0, 2532, 0, 4, 0, UNI_BRAH } /* brah */, + { 11, 21, 3164, 2, 18, UNI_LATINEXTADDITIONAL } /* inlatinextadditional */, + { 1, 7018, 9006, 10, 3, UNI_IN__2_DOT_1 } /* presentin=2.1 */, + { 0, 8886, 2127, 3, 14, UNI_SC__ROHG } /* sc=hanifirohingya */, + { 5, 3002, 2709, 18, 3, UNI_DT__NAR } /* decompositiontype=nar */, + { 0, 9731, 5625, 3, 2, UNI_WB__ML } /* wb=ml */, + { 0, 9093, 2064, 4, 21, UNI_CJKRADICALSSUP } /* blk=cjkradicalssupplement */, + { 0, 5760, 7604, 13, 8, UNI_NV__2_SLASH_5 } /* numericvalue=4.00e-01 */, + { 1, 1497, 995, 9, 2, UNI_NO } /* category=no */, + { 1, 8424, 5448, 6, 13, UNI_BLOCKELEMENTS } /* block=blockelements */, + { 1, 8424, 149, 7, 34, UNI_DIACRITICALSSUP } /* block=combiningdiacriticalmarkssupplement */, + { 24, 8424, 8031, 7, 6, UNI_CJKEXTD } /* block=cjkextd */, + { 44, 5760, 3969, 13, 1, UNI_NV__1 } /* numericvalue=1 */, + { 24, 3868, 1, 16, 1, UNI_N } /* generalcategory=n */, + { 0, 21, 7996, 3, 6, UNI_INAVESTAN } /* inavestan */, + { 3, 8424, 43, 7, 2, UNI_CJK } /* block=cjk */, + { 419, 8424, 8709, 6, 5, UNI_INBUHID } /* block=buhid */, + { 12, 9629, 5847, 3, 12, UNI_LB__SY } /* lb=breaksymbols */, + { 0, 8424, 3756, 6, 16, UNI_ARABICSUP } /* block=arabicsupplement */, + { 74, 5565, 5143, 13, 14, UNI_JG__MANICHAEANQOPH } /* joininggroup=manichaeanqoph */, + { 0, 8424, 3536, 7, 16, UNI_CYRILLICEXTC } /* block=cyrillicextendedc */, + { 3, 8634, 0, 6, 0, UNI_uideo_values_index } /* uideo= */, + { 0, 3688, 0, 16, 0, UNI_STERM } /* sentenceterminal */, + { 3, 1482, 61, 3, 4, UNI_INDOGRA } /* indogra */, + { 0, 9453, 0, 3, 0, UNI_VAI } /* vai */, + { 0, 5565, 8544, 13, 6, UNI_JG__LAMADH } /* joininggroup=lamadh */, + { 22, 3739, 995, 17, 2, -UNI_UIDEO } /* unifiedideograph=no */, + { 0, 5760, 9509, 13, 3, UNI_NV__2_SLASH_5 } /* numericvalue=2/5 */, + { 0, 21, 3418, 4, 15, UNI_ALCHEMICAL } /* inalchemicalsymbols */, + { 266, 5760, 7708, 13, 8, UNI_NV__15_SLASH_2 } /* numericvalue=7.50e+00 */, + { 36, 5513, 3, 13, 1, -UNI_GRBASE } /* graphemebase=f */, + { 0, 4580, 6560, 4, 9, UNI_INMEDEFAIDRIN } /* inmedefaidrin */, + { 4, 8424, 4388, 7, 14, UNI_CURRENCYSYMBOLS } /* block=currencysymbols */, + { 8, 184, 4933, 2, 14, UNI_INGREEK } /* isgreekandcoptic */, + { 0, 8844, 9734, 5, 3, UNI_CWCF } /* cwcf=yes */, + { 8, 4361, 3886, 4, 9, UNI_GEORGIANEXT } /* ingeorgianext */, + { 10, 184, 6171, 2, 12, UNI_MATHALPHANUM } /* ismathalphanum */, + { 2, 8424, 9397, 6, 4, UNI_TAGS } /* block=tags */, + { 5, 9923, 8312, 4, 5, UNI_INTIRHUTA } /* intirhuta */, + { 26, 5565, 6785, 13, 3, UNI_JG__FEH } /* joininggroup=feh */, + { 1, 6918, 958, 10, 2, UNI_LB__CP } /* linebreak=cp */, + { 29, 184, 2006, 2, 4, UNI_MODI } /* ismodi */, + { 8, 995, 0, 2, 0, UNI_NO } /* no */, + { 1, 5325, 3, 14, 1, -UNI_QMARK } /* quotationmark=f */, + { 0, 25, 0, 1, 0, UNI_S } /* s */, + { 3, 9093, 1889, 4, 22, UNI_EARLYDYNASTICCUNEIFORM } /* blk=earlydynasticcuneiform */, + { 1, 21, 6898, 2, 10, UNI_INKHAROSHTHI } /* inkharoshthi */, + { 0, 184, 6838, 2, 10, UNI_BOXDRAWING } /* isboxdrawing */, + { 3, 9113, 8437, 5, 5, UNI_CCC__103 } /* ccc=ccc103 */, + { 170, 9113, 18, 4, 1, UNI_CCC__R } /* ccc=r */, + { 1, 5269, 26, 14, 1, UNI_PATSYN } /* patternsyntax=y */, + { 0, 6816, 8710, 3, 4, UNI_INBUHID } /* inbuhid */, + { 0, 9101, 0, 4, 0, UNI_BUHD } /* buhd */, + { 0, 9093, 8079, 4, 7, UNI_INGRANTHA } /* blk=grantha */, + { 25, 3671, 7804, 17, 8, UNI_BUGI } /* scriptextensions=buginese */, + { 9, 7025, 9563, 3, 3, UNI_IN__5_DOT_1 } /* in=5.1 */, + { 9, 6888, 8864, 10, 5, -UNI_DIA } /* diacritic=false */, + { 15, 8424, 3772, 6, 8, UNI_INBOPOMOFO } /* block=bopomofo */, + { 52, 9725, 0, 3, 1, UNI_VO__U } /* vo=u */, + { 3, 7128, 7820, 10, 8, UNI_WB__EB } /* wordbreak=ebasegaz */, + { 3, 8233, 9273, 7, 4, UNI_NARB } /* script=narb */, + { 2, 9289, 0, 4, 0, UNI_NSHU } /* nshu */, + { 0, 7025, 7446, 3, 1, UNI_IN__2 } /* in=2 */, + { 192, 8424, 4204, 6, 9, UNI_SYRIACSUP } /* block=syriacsup */, + { 0, 2493, 409, 20, 2, UNI_VO__TR } /* verticalorientation=tr */, + { 0, 3671, 4657, 17, 15, UNI_NARB } /* scriptextensions=oldnortharabian */, + { 0, 9911, 0, 10, 0, UNI_POSIXBLANK } /* posixblank */, + { 43, 8886, 9233, 3, 4, UNI_LISU } /* sc=lisu */, + { 2, 8886, 5617, 3, 9, UNI_SC__MLYM } /* sc=malayalam */, + { 0, 7128, 138, 10, 2, UNI_WB__FO } /* wordbreak=fo */, + { 5, 6027, 0, 12, 0, UNI_KHMERSYMBOLS } /* khmersymbols */, + { 0, 8233, 9085, 7, 4, UNI_BATK } /* script=batk */, + { 38, 2148, 4205, 3, 15, UNI_SYRIACSUP } /* insyriacsupplement */, + { 3, 9593, 2433, 3, 20, UNI_BC__RLE } /* bc=righttoleftembedding */, + { 0, 446, 0, 32, 0, UNI_IDEOGRAPHICSYMBOLS } /* ideographicsymbolsandpunctuation */, + { 2, 184, 407, 3, 6, UNI_XPOSIXCNTRL } /* iscontrol */, + { 257, 7128, 125, 10, 2, UNI_LB__CR } /* wordbreak=cr */, + { 0, 3467, 0, 17, 0, UNI_AGHB } /* caucasianalbanian */, + { 1, 184, 1136, 2, 25, UNI_DI } /* isdefaultignorablecodepoint */, + { 31, 8586, 47, 6, 1, UNI_NFCQC__M } /* nfcqc=m */, + { 0, 2212, 2648, 4, 17, UNI_JAMOEXTA } /* inhanguljamoextendeda */, + { 19, 184, 9265, 2, 4, UNI_MTEI } /* ismtei */, + { 3, 8332, 4254, 4, 13, UNI_ARABICEXTA } /* isarabicextendeda */, + { 16, 8884, 4188, 5, 16, UNI_INSC__SYLLABLEMODIFIER } /* insc=syllablemodifier */, + { 8, 8424, 3164, 6, 18, UNI_LATINEXTADDITIONAL } /* block=latinextadditional */, + { 7, 2106, 1164, 21, 2, UNI_LB__LF } /* graphemeclusterbreak=lf */, + { 6, 9093, 6690, 4, 11, UNI_INSORASOMPENG } /* blk=sorasompeng */, + { 3, 8128, 0, 7, 0, UNI_MAKA } /* makasar */, + { 4, 8233, 9405, 7, 4, UNI_TALU } /* script=talu */, + { 165, 8871, 721, 3, 2, UNI_SB__CL } /* sb=cl */, + { 0, 1362, 7555, 24, 2, UNI_CCC__23 } /* canonicalcombiningclass=23 */, + { 76, 7932, 9734, 8, 3, UNI_RADICAL } /* radical=yes */, + { 1, 9731, 5967, 3, 12, UNI_LB__HL } /* wb=hebrewletter */, + { 10, 8030, 0, 7, 0, UNI_CJKEXTD } /* cjkextd */, + { 188, 9626, 18, 3, 1, UNI_JT__R } /* jt=r */, + { 0, 3671, 9229, 17, 4, UNI_LINB } /* scriptextensions=linb */, + { 0, 8886, 4657, 3, 15, UNI_NARB } /* sc=oldnortharabian */, + { 8, 8233, 7, 7, 18, UNI_CANS } /* script=canadianaboriginal */, + { 1, 9093, 1599, 4, 6, UNI_INHANGUL } /* blk=hangul */, + { 0, 1362, 9518, 24, 3, UNI_CCC__BL } /* canonicalcombiningclass=218 */, + { 1, 8886, 8065, 3, 7, UNI_ELBA } /* sc=elbasan */, + { 0, 8598, 8864, 6, 5, -UNI__PERL_PATWS } /* patws=false */, + { 74, 9901, 9921, 8, 5, UNI_XPOSIXPRINT } /* isxposixprint */, + { 0, 9647, 8371, 3, 2, UNI_NV__32 } /* nv=32 */, + { 39, 8598, 995, 6, 2, -UNI__PERL_PATWS } /* patws=no */, + { 107, 6005, 5872, 3, 11, UNI_CYRILLICEXTA } /* incyrillicexta */, + { 6, 3671, 9217, 17, 3, UNI_LAO } /* scriptextensions=lao */, + { 0, 9647, 7435, 3, 2, UNI_NV__11 } /* nv=11 */, + { 0, 5565, 6785, 13, 2, UNI_JG__FE } /* joininggroup=fe */, + { 0, 5760, 7763, 13, 2, UNI_NV__19 } /* numericvalue=19 */, + { 0, 3671, 9401, 17, 4, UNI_TALE } /* scriptextensions=tale */, + { 0, 184, 5311, 2, 14, UNI_PHLP } /* ispsalterpahlavi */, + { 0, 8919, 0, 5, 0, UNI_OGAM } /* ogham */, + { 0, 9629, 8100, 3, 2, UNI_LB__HY } /* lb=hy */, + { 0, 9647, 8669, 3, 5, UNI_NV__1_SLASH_320 } /* nv=1/320 */, + { 8, 5565, 5695, 13, 13, UNI_JG__MANICHAEANTEN } /* joininggroup=manichaeanten */, + { 0, 3671, 8939, 17, 5, UNI_TALE } /* scriptextensions=taile */, + { 0, 1911, 1214, 22, 25, UNI_INSC__CONSONANTINITIALPOSTFIXED } /* indicsyllabiccategory=consonantinitialpostfixed */, + { 6, 3671, 2741, 17, 19, UNI_MERO } /* scriptextensions=meroitichieroglyphs */, + { 3, 8424, 3552, 6, 11, UNI_ETHIOPICEXT } /* block=ethiopicext */, + { 0, 6978, 0, 10, 0, UNI_XPEO } /* oldpersian */, + { 0, 8886, 8628, 3, 6, UNI_SC__THAA } /* sc=thaana */, + { 1, 184, 7118, 2, 10, UNI_WARA } /* iswarangciti */, + { 262, 1314, 0, 24, 0, UNI_ARABICPFA } /* arabicpresentationformsa */, + { 0, 5213, 26, 14, 1, UNI_NFCQC__Y } /* nfcquickcheck=y */, + { 0, 3671, 8128, 17, 4, UNI_MAKA } /* scriptextensions=maka */, + { 0, 6828, 25, 10, 1, UNI_BC__S } /* bidiclass=s */, + { 0, 8526, 0, 6, 0, UNI_KTHI } /* kaithi */, + { 162, 8886, 7347, 3, 9, UNI_ORKH } /* sc=oldturkic */, + { 0, 8580, 9734, 6, 3, UNI__PERL_NCHAR } /* nchar=yes */, + { 65, 8886, 497, 5, 3, UNI_KHMR } /* sc=khmer */, + { 0, 9365, 9465, 4, 4, UNI_XPEO } /* scx=xpeo */, + { 3, 3416, 0, 10, 0, UNI_ALCHEMICAL } /* alchemical */, + { 1, 8233, 9209, 7, 4, UNI_SC__KTHI } /* script=kthi */, + { 0, 8886, 9373, 3, 4, UNI_SGNW } /* sc=sgnw */, + { 0, 9909, 3, 3, 1, UNI_PF } /* ispf */, + { 0, 8424, 8610, 6, 6, UNI_INREJANG } /* block=rejang */, + { 4, 3868, 262, 16, 2, UNI_SM } /* generalcategory=sm */, + { 358, 2708, 4254, 4, 13, UNI_ARABICEXTA } /* inarabicextendeda */, + { 0, 5513, 995, 13, 2, -UNI_GRBASE } /* graphemebase=no */, + { 144, 8879, 6268, 3, 11, UNI_PHAISTOS } /* inphaistosdisc */, + { 1, 9365, 3467, 4, 17, UNI_AGHB } /* scx=caucasianalbanian */, + { 8, 9365, 9241, 4, 4, UNI_MEDF } /* scx=medf */, + { 1, 8424, 8317, 6, 7, UNI_UCASEXT } /* block=ucasext */, + { 1, 9620, 697, 3, 2, UNI_MN } /* gc=mn */, + { 0, 9097, 17, 4, 1, UNI_BPT__O } /* bpt=o */, + { 4, 184, 4507, 2, 15, UNI_LOWERCASELETTER } /* islowercaseletter */, + { 0, 8424, 7185, 6, 9, UNI_ARABICPFA } /* block=arabicpfa */, + { 104, 8955, 995, 4, 2, -UNI_IDC } /* idc=no */, + { 177, 6679, 1, 11, 1, -UNI_SD } /* softdotted=n */, + { 2, 2493, 3373, 20, 7, UNI_VO__R } /* verticalorientation=rotated */, + { 11, 9093, 8268, 4, 7, UNI_SUPPUAA } /* blk=suppuaa */, + { 112, 1889, 0, 22, 0, UNI_EARLYDYNASTICCUNEIFORM } /* earlydynasticcuneiform */, + { 44, 4447, 4290, 15, 7, UNI_EA__N } /* eastasianwidth=neutral */, + { 10, 9629, 4877, 3, 14, UNI_LB__SA } /* lb=complexcontext */, + { 2, 9864, 9839, 14, 7, UNI__PERL_NON_FINAL_FOLDS } /* _perl_non_final_folds */, + { 2, 8886, 8944, 3, 5, UNI_SC__TAKR } /* sc=takri */, + { 2, 1911, 4702, 22, 15, UNI_INSC__REGISTERSHIFTER } /* indicsyllabiccategory=registershifter */, + { 1, 21, 3290, 2, 4, UNI_RUMI } /* inrumi */, + { 22, 8424, 3932, 6, 16, UNI_HIGHPUSURROGATES } /* block=highpusurrogates */, + { 3, 9593, 9644, 3, 3, UNI_BC__NSM } /* bc=nsm */, + { 1, 1362, 9533, 24, 3, UNI_CCC__A } /* canonicalcombiningclass=230 */, + { 0, 5760, 7540, 13, 6, UNI_NV__200000 } /* numericvalue=200000 */, + { 19, 5760, 7487, 13, 1, UNI_NV__6 } /* numericvalue=6 */, + { 1, 4705, 8311, 3, 6, UNI_TIRH } /* istirhuta */, + { 0, 8424, 8010, 7, 6, UNI_CJKEXTA } /* block=cjkexta */, + { 0, 7311, 0, 9, 0, UNI_TALU } /* newtailue */, + { 177, 1497, 1767, 9, 2, UNI_NL } /* category=nl */, + { 2, 3671, 7980, 17, 8, UNI_UGAR } /* scriptextensions=ugaritic */, + { 0, 4705, 4718, 3, 7, UNI_TAMILSUP } /* istamilsup */, + { 0, 8424, 2931, 7, 10, UNI_CHEROKEESUP } /* block=cherokeesup */, + { 42, 8496, 995, 6, 2, -UNI_CWKCF } /* cwkcf=no */, + { 35, 6949, 2, 5, 1, UNI_CARI } /* iscari */, + { 1, 9093, 1289, 4, 25, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* blk=symbolsandpictographsexta */, + { 42, 9593, 3218, 3, 18, UNI_BC__B } /* bc=paragraphseparator */, + { 0, 184, 8859, 2, 4, UNI_DOGR } /* isdogr */, + { 0, 8871, 1812, 3, 5, UNI_SB__UP } /* sb=upper */, + { 0, 9113, 8745, 5, 4, UNI_CCC__20 } /* ccc=ccc20 */, + { 167, 8424, 4582, 6, 15, UNI_INMEROITICCURSIVE } /* block=meroiticcursive */, + { 2, 3671, 7049, 18, 3, UNI_SAUR } /* scriptextensions=saur */, + { 8, 9647, 8400, 3, 4, UNI_NV__9000 } /* nv=9000 */, + { 0, 7018, 9689, 10, 3, UNI_IN__4 } /* presentin=v40 */, + { 2, 1362, 8439, 24, 3, UNI_CCC__103 } /* canonicalcombiningclass=103 */, + { 39, 9605, 1223, 3, 4, UNI_DT__INIT } /* dt=init */, + { 0, 1757, 1, 22, 1, -UNI_CWL } /* changeswhenlowercased=n */, + { 0, 5487, 0, 13, 0, UNI_XPOSIXDIGIT } /* decimalnumber */, + { 57, 9901, 8839, 8, 5, UNI_XPOSIXCNTRL } /* isxposixcntrl */, + { 0, 4705, 8945, 3, 3, UNI_TAKR } /* istakr */, + { 1, 8332, 7996, 3, 6, UNI_AVST } /* isavestan */, + { 128, 9620, 995, 3, 2, UNI_NO } /* gc=no */, + { 0, 8886, 7916, 3, 8, UNI_SC__MAHJ } /* sc=mahajani */, + { 252, 6003, 3, 12, 1, -UNI_JOINC } /* joincontrol=f */, + { 194, 184, 114, 3, 24, UNI_DIACRITICALS } /* iscombiningdiacriticalmarks */, + { 0, 7419, 995, 9, 2, -UNI_XIDS } /* xidstart=no */, + { 19, 8424, 2836, 6, 12, UNI_SUNDANESESUP } /* block=sundanesesup */, + { 1, 9277, 0, 4, 0, UNI_NBAT } /* nbat */, + { 1, 9605, 1264, 3, 5, UNI_DT__SUP } /* dt=super */, + { 2, 9647, 8364, 3, 3, UNI_NV__400 } /* nv=400 */, + { 6, 9113, 5138, 4, 2, UNI_CCC__7 } /* ccc=nk */, + { 2, 9593, 5603, 3, 3, UNI_BC__RLO } /* bc=rlo */, + { 0, 4829, 0, 5, 0, UNI_XPOSIXDIGIT } /* digit */, + { 0, 6194, 7348, 3, 8, UNI_INOLDTURKIC } /* inoldturkic */, + { 126, 1482, 6734, 24, 11, UNI_INPC__TOPANDRIGHT } /* indicpositionalcategory=topandright */, + { 29, 5339, 1812, 14, 5, UNI_SB__UP } /* sentencebreak=upper */, + { 0, 9113, 184, 4, 2, UNI_CCC__IS } /* ccc=is */, + { 22, 9647, 7468, 3, 8, UNI_NV__3_SLASH_2 } /* nv=1.50e+00 */, + { 71, 6315, 26, 12, 1, UNI_XIDC } /* xidcontinue=y */, + { 1, 8424, 8949, 6, 5, UNI_VSSUP } /* block=vssup */, + { 321, 9257, 0, 4, 0, UNI_MLYM } /* mlym */, + { 0, 3671, 8622, 17, 6, UNI_TELU } /* scriptextensions=telugu */, + { 0, 3671, 8142, 17, 7, UNI_MARC } /* scriptextensions=marchen */, + { 0, 9620, 1532, 3, 1, UNI_Z } /* gc=z */, + { 19, 8886, 9285, 3, 4, UNI_NKO } /* sc=nkoo */, + { 265, 7940, 0, 8, 0, UNI_SPECIALS } /* specials */, + { 8, 7025, 9566, 3, 3, UNI_IN__5_DOT_2 } /* in=5.2 */, + { 167, 2708, 1340, 4, 22, UNI_ARABICPFB } /* inarabicpresentationformsb */, + { 2, 2204, 262, 3, 3, UNI_OSMA } /* isosma */, + { 312, 184, 5045, 2, 14, UNI_LATINEXTE } /* islatinextendede */, + { 5, 3671, 2409, 17, 4, UNI_MONG } /* scriptextensions=mong */, + { 0, 184, 11, 2, 3, UNI_DIA } /* isdia */, + { 0, 9093, 2353, 4, 20, UNI_ININSCRIPTIONALPAHLAVI } /* blk=inscriptionalpahlavi */, + { 1, 6646, 0, 11, 0, UNI_HMNG } /* pahawhhmong */, + { 41, 7078, 0, 10, 0, UNI_SUPARROWSB } /* suparrowsb */, + { 0, 6371, 0, 10, 0, UNI_DEP } /* deprecated */, + { 3, 8233, 8562, 7, 6, UNI_LYCI } /* script=lycian */, + { 136, 8233, 3730, 8, 3, UNI_SGNW } /* script=sgnw */, + { 3, 8959, 3, 5, 1, -UNI_XIDS } /* xids=f */, + { 0, 7128, 7293, 10, 6, UNI_WB__MN } /* wordbreak=midnum */, + { 1, 8424, 1618, 6, 4, UNI_JAMO } /* block=jamo */, + { 2, 8604, 0, 6, 0, UNI_qmark_values_index } /* qmark= */, + { 198, 8508, 8864, 6, 5, -UNI_GREXT } /* grext=false */, + { 16, 4849, 0, 14, 0, UNI_ci_values_index } /* caseignorable= */, + { 2, 2984, 0, 18, 0, UNI_COPTICEPACTNUMBERS } /* copticepactnumbers */, + { 1, 6005, 540, 3, 29, UNI_CJKEXTB } /* incjkunifiedideographsextensionb */, + { 0, 1735, 36, 22, 1, UNI_CWCM } /* changeswhencasemapped=t */, + { 128, 1243, 0, 20, 0, UNI_CE } /* compositionexclusion */, + { 0, 5565, 5381, 13, 10, UNI_JG__TEHMARBUTA } /* joininggroup=tehmarbuta */, + { 5, 6003, 8864, 12, 5, -UNI_JOINC } /* joincontrol=false */, + { 146, 9365, 7203, 4, 9, UNI_BHKS } /* scx=bhaiksuki */, + { 771, 9731, 34, 3, 6, UNI_WB__EXTEND } /* wb=extend */, + { 7, 2106, 36, 21, 1, UNI_GCB__T } /* graphemeclusterbreak=t */, + { 72, 5227, 0, 14, 0, UNI_nfdqc_values_index } /* nfdquickcheck= */, + { 7, 184, 5835, 2, 11, UNI_BIDIC } /* isbidicontrol */, + { 0, 184, 1618, 2, 4, UNI_JAMO } /* isjamo */, + { 81, 8233, 9177, 7, 4, UNI_SC__HANO } /* script=hano */, + { 2, 8854, 8864, 5, 5, -UNI_DASH } /* dash=false */, + { 0, 1497, 74, 9, 2, UNI_ME } /* category=me */, + { 203, 1362, 7540, 24, 2, UNI_CCC__20 } /* canonicalcombiningclass=20 */, + { 324, 5283, 0, 14, 0, UNI_PHONETICEXTSUP } /* phoneticextsup */, + { 2, 8233, 7772, 7, 8, UNI_SC__ARMN } /* script=armenian */, + { 265, 9620, 4747, 3, 15, UNI_UPPERCASELETTER } /* gc=uppercaseletter */, + { 324, 2204, 6097, 3, 3, UNI_OGAM } /* isogam */, + { 0, 9647, 7487, 3, 1, UNI_NV__6 } /* nv=6 */, + { 120, 808, 0, 29, 0, UNI_MISCARROWS } /* miscellaneoussymbolsandarrows */, + { 30, 7025, 9683, 3, 3, UNI_IN__3_DOT_1 } /* in=v31 */, + { 204, 5565, 6111, 13, 12, UNI_JG__MALAYALAMNYA } /* joininggroup=malayalamnya */, + { 0, 8886, 8540, 5, 4, UNI_SC__KHOJ } /* sc=khojki */, + { 0, 8424, 719, 6, 21, UNI_ENCLOSEDALPHANUM } /* block=enclosedalphanumerics */, + { 0, 4687, 0, 15, 0, UNI_PS } /* openpunctuation */, + { 2, 8699, 0, 5, 0, UNI_BATK } /* batak */, + { 1, 9093, 9281, 4, 4, UNI_INNEWA } /* blk=newa */, + { 0, 1779, 9433, 22, 4, UNI_CWT } /* changeswhentitlecased=true */, + { 0, 3671, 8065, 17, 7, UNI_ELBA } /* scriptextensions=elbasan */, + { 0, 8886, 9257, 3, 4, UNI_SC__MLYM } /* sc=mlym */, + { 0, 9647, 7611, 3, 2, UNI_NV__14 } /* nv=14 */, + { 0, 9093, 5604, 4, 13, UNI_LOWSURROGATES } /* blk=lowsurrogates */, + { 8, 2453, 8864, 20, 5, -UNI_TERM } /* terminalpunctuation=false */, + { 3, 184, 1736, 3, 20, UNI_CWCM } /* ischangeswhencasemapped */, + { 276, 9909, 3468, 3, 3, UNI_PAUC } /* ispauc */, + { 578, 9629, 9761, 3, 2, UNI_GCB__L } /* lb=jl */, + { 46, 9221, 0, 4, 0, UNI_LATN } /* latn */, + { 1, 184, 9457, 2, 4, UNI_WCHO } /* iswcho */, + { 0, 5269, 36, 14, 1, UNI_PATSYN } /* patternsyntax=t */, + { 0, 4705, 1791, 3, 8, UNI_TITLE } /* istitlecase */, + { 5, 8598, 1, 6, 1, -UNI__PERL_PATWS } /* patws=n */, + { 2, 6005, 5884, 3, 11, UNI_CYRILLICEXTB } /* incyrillicextb */, + { 153, 9113, 9536, 4, 3, UNI_CCC__AR } /* ccc=232 */, + { 9, 184, 2760, 2, 19, UNI_MODIFIERTONELETTERS } /* ismodifiertoneletters */, + { 179, 8884, 1214, 5, 9, UNI_INSC__CONSONANT } /* insc=consonant */, + { 259, 6949, 12, 5, 3, UNI_CARI } /* iscarian */, + { 0, 1362, 8457, 24, 3, UNI_CCC__122 } /* canonicalcombiningclass=122 */, + { 265, 9647, 5409, 3, 7, UNI_NV__1000000 } /* nv=1000000 */, + { 546, 6316, 1, 11, 1, -UNI_IDC } /* idcontinue=n */, + { 0, 8424, 8514, 6, 6, UNI_INHATRAN } /* block=hatran */, + { 0, 8233, 9241, 7, 4, UNI_MEDF } /* script=medf */, + { 0, 6918, 5346, 10, 2, UNI_LB__EB } /* linebreak=eb */, + { 0, 1933, 0, 21, 0, UNI_LOE } /* logicalorderexception */, + { 3, 8886, 8562, 3, 6, UNI_LYCI } /* sc=lycian */, + { 0, 8424, 3586, 6, 17, UNI_INDICSIYAQNUMBERS } /* block=indicsiyaqnumbers */, + { 81, 8510, 9433, 4, 4, UNI_EXT } /* ext=true */, + { 194, 8886, 6602, 3, 4, UNI_SC__NAND } /* sc=nand */, + { 0, 9365, 8079, 4, 4, UNI_GRAN } /* scx=gran */, + { 392, 5760, 7476, 13, 8, UNI_NV__3_SLASH_20 } /* numericvalue=1.50e-01 */, + { 0, 9365, 6554, 5, 3, UNI_SAMR } /* scx=samr */, + { 5, 3868, 5500, 16, 13, UNI_ME } /* generalcategory=enclosingmark */, + { 129, 1773, 3, 6, 1, -UNI_CASED } /* cased=f */, + { 3, 9153, 34, 4, 2, UNI_GCB__EX } /* gcb=ex */, + { 74, 8886, 2169, 3, 11, UNI_MTEI } /* sc=meeteimayek */, + { 2, 9109, 0, 4, 0, UNI_CANS } /* cans */, + { 323, 3671, 6992, 18, 3, UNI_SOGD } /* scriptextensions=sogd */, + { 0, 21, 5031, 2, 14, UNI_LATINEXTD } /* inlatinextendedd */, + { 298, 1933, 8864, 22, 5, -UNI_LOE } /* logicalorderexception=false */, + { 218, 9049, 7668, 4, 3, UNI_AGE__6_DOT_2 } /* age=6.2 */, + { 1, 9329, 0, 4, 0, UNI_PRTI } /* prti */, + { 86, 9903, 3248, 6, 5, UNI_XPOSIXSPACE } /* xposixspace */, + { 1, 8233, 8894, 7, 5, UNI_SC__LIMB } /* script=limbu */, + { 140, 9365, 8568, 4, 4, UNI_LYDI } /* scx=lydi */, + { 0, 9113, 6393, 4, 11, UNI_CCC__DA } /* ccc=doubleabove */, + { 14, 3868, 9779, 16, 2, UNI_ZS } /* generalcategory=zs */, + { 2, 2493, 0, 20, 1, UNI_VO__U } /* verticalorientation=u */, + { 0, 9901, 2703, 3, 3, UNI_XIDS } /* isxids */, + { 0, 3671, 2253, 17, 20, UNI_HLUW } /* scriptextensions=anatolianhieroglyphs */, + { 0, 8233, 8914, 7, 5, UNI_NSHU } /* script=nushu */, + { 0, 3671, 9425, 17, 4, UNI_THAI } /* scriptextensions=thai */, + { 769, 184, 4864, 3, 13, UNI_CJKCOMPATFORMS } /* iscjkcompatforms */, + { 0, 8616, 9434, 7, 3, UNI_STERM } /* sterm=true */, + { 3, 8959, 9433, 5, 4, UNI_XIDS } /* xids=true */, + { 0, 8233, 9457, 7, 4, UNI_WCHO } /* script=wcho */, + { 0, 5760, 7611, 13, 2, UNI_NV__14 } /* numericvalue=14 */, + { 0, 9629, 958, 3, 2, UNI_LB__CP } /* lb=cp */, + { 369, 9049, 9698, 4, 3, UNI_AGE__5_DOT_1 } /* age=v51 */, + { 0, 3002, 6195, 18, 8, UNI_DT__NONCANON } /* decompositiontype=noncanon */, + { 290, 9365, 8324, 4, 7, UNI_ZZZZ } /* scx=unknown */, + { 0, 21, 7900, 2, 8, UNI_KANAEXTA } /* inkanaexta */, + { 164, 1977, 8864, 22, 5, -UNI__PERL_NCHAR } /* noncharactercodepoint=false */, + { 20, 9365, 6992, 5, 3, UNI_SOGD } /* scx=sogd */, + { 6, 9623, 4522, 3, 15, UNI_JG__MANICHAEANALEPH } /* jg=manichaeanaleph */, + { 0, 8508, 0, 5, 0, UNI_GREXT } /* grext */, + { 1, 9835, 9819, 14, 11, UNI__PERL_FOLDS_TO_MULTI_CHAR } /* _perl_folds_to_multi_char */, + { 1, 8424, 4989, 6, 14, UNI_KANGXI } /* block=kangxiradicals */, + { 1, 3671, 9265, 17, 4, UNI_MTEI } /* scriptextensions=mtei */, + { 91, 865, 0, 28, 0, UNI_SUPPUAA } /* supplementaryprivateuseareaa */, + { 1, 21, 1618, 2, 4, UNI_JAMO } /* injamo */, + { 5, 1911, 8909, 22, 5, UNI_INSC__NUKTA } /* indicsyllabiccategory=nukta */, + { 35, 5565, 5630, 13, 13, UNI_JG__MALAYALAMNNNA } /* joininggroup=malayalamnnna */, + { 0, 6338, 26, 11, 1, UNI_XPOSIXALPHA } /* alphabetic=y */, + { 35, 8886, 9057, 3, 4, UNI_AHOM } /* sc=ahom */, + { 128, 7420, 1, 8, 1, -UNI_IDS } /* idstart=n */, + { 0, 6338, 9734, 11, 3, UNI_XPOSIXALPHA } /* alphabetic=yes */, + { 60, 184, 349, 2, 33, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* issupplementalsymbolsandpictographs */, + { 135, 6005, 3502, 3, 16, UNI_CYRILLICEXTA } /* incyrillicextendeda */, + { 0, 8424, 3603, 6, 17, UNI_LETTERLIKESYMBOLS } /* block=letterlikesymbols */, + { 32, 9113, 8770, 5, 4, UNI_CCC__25 } /* ccc=ccc25 */, + { 0, 6828, 2722, 10, 19, UNI_BC__LRO } /* bidiclass=lefttorightoverride */, + { 0, 8424, 1999, 6, 22, UNI_MODIFIERLETTERS } /* block=spacingmodifierletters */, + { 0, 8424, 8017, 7, 6, UNI_CJKEXTB } /* block=cjkextb */, + { 0, 9093, 4175, 4, 13, UNI_MATHOPERATORS } /* blk=mathoperators */, + { 0, 6015, 6426, 12, 11, UNI_JT__D } /* joiningtype=dualjoining */, + { 0, 9365, 8562, 4, 6, UNI_LYCI } /* scx=lycian */, + { 0, 8634, 0, 5, 0, UNI_UIDEO } /* uideo */, + { 0, 6816, 4268, 3, 7, UNI_BAMUMSUP } /* inbamumsup */, + { 1, 1362, 9539, 24, 3, UNI_CCC__DB } /* canonicalcombiningclass=233 */, + { 0, 1239, 9734, 25, 3, UNI_COMPEX } /* fullcompositionexclusion=yes */, + { 0, 184, 4172, 2, 16, UNI_SUPMATHOPERATORS } /* issupmathoperators */, + { 146, 5339, 2453, 15, 4, UNI_SB__ST } /* sentencebreak=sterm */, + { 0, 8617, 9734, 5, 3, UNI_TERM } /* term=yes */, + { 5, 2148, 6713, 3, 10, UNI_SUPERANDSUB } /* insuperandsub */, + { 0, 6267, 0, 12, 0, UNI_PHAISTOS } /* phaistosdisc */, + { 0, 9605, 7868, 3, 8, UNI_DT__ISO } /* dt=isolated */, + { 0, 2204, 7349, 4, 7, UNI_ORKH } /* isoldturkic */, + { 423, 9113, 8449, 5, 5, UNI_CCC__118 } /* ccc=ccc118 */, + { 0, 3671, 8002, 17, 4, UNI_BENG } /* scriptextensions=beng */, + { 0, 9593, 2192, 3, 3, UNI_BC__PDI } /* bc=pdi */, + { 0, 8233, 7788, 7, 4, UNI_BALI } /* script=bali */, + { 0, 1713, 1, 22, 1, -UNI_CWCF } /* changeswhencasefolded=n */, + { 30, 9365, 8679, 4, 5, UNI_ADLM } /* scx=adlam */, + { 0, 6005, 43, 3, 35, UNI_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatibilityideographssupplement */, + { 196, 3002, 1264, 18, 5, UNI_DT__SUP } /* decompositiontype=super */, + { 0, 4705, 8629, 3, 5, UNI_THAA } /* isthaana */, + { 110, 184, 8532, 2, 6, UNI_KANBUN } /* iskanbun */, + { 0, 6315, 3, 12, 1, -UNI_XIDC } /* xidcontinue=f */, + { 7, 3002, 7836, 18, 8, UNI_DT__FRA } /* decompositiontype=fraction */, + { 128, 184, 34, 2, 3, UNI_EXT } /* isext */, + { 0, 3671, 2608, 17, 19, UNI_EGYP } /* scriptextensions=egyptianhieroglyphs */, + { 3, 3868, 4829, 16, 5, UNI_XPOSIXDIGIT } /* generalcategory=digit */, + { 16, 837, 0, 28, 0, UNI_PHONETICEXTSUP } /* phoneticextensionssupplement */, + { 1, 2204, 1704, 4, 2, UNI_OLCK } /* isolck */, + { 162, 3002, 0, 18, 0, UNI_dt_values_index } /* decompositiontype= */, + { 0, 8424, 5860, 7, 11, UNI_CHESSSYMBOLS } /* block=chesssymbols */, + { 60, 9647, 9554, 3, 3, UNI_NV__3_SLASH_4 } /* nv=3/4 */, + { 3, 5760, 9506, 13, 3, UNI_NV__2_SLASH_3 } /* numericvalue=2/3 */, + { 1, 9249, 0, 4, 0, UNI_MERC } /* merc */, + { 0, 2708, 1316, 4, 22, UNI_ARABICPFA } /* inarabicpresentationformsa */, + { 23, 3218, 0, 18, 0, UNI_ZP } /* paragraphseparator */, + { 0, 9365, 9309, 4, 4, UNI_OSGE } /* scx=osge */, + { 35, 9365, 3038, 4, 8, UNI_ETHI } /* scx=ethiopic */, + { 0, 8849, 0, 5, 0, UNI_cwcm_values_index } /* cwcm= */, + { 8, 9049, 7604, 4, 3, UNI_AGE__4 } /* age=4.0 */, + { 13, 3671, 8072, 17, 4, UNI_ELYM } /* scriptextensions=elym */, + { 6, 184, 5526, 2, 8, UNI_GREEKEXT } /* isgreekext */, + { 0, 7068, 0, 10, 0, UNI_SUPARROWSA } /* suparrowsa */, + { 5, 3868, 1767, 16, 2, UNI_NL } /* generalcategory=nl */, + { 0, 9629, 3820, 3, 16, UNI_LB__CL } /* lb=closepunctuation */, + { 16, 8424, 6279, 6, 12, UNI_PLAYINGCARDS } /* block=playingcards */, + { 0, 7018, 9722, 10, 3, UNI_IN__9 } /* presentin=v90 */, + { 0, 7018, 7502, 10, 1, UNI_IN__8 } /* presentin=8 */, + { 14, 184, 3236, 2, 17, UNI__PERL_PATWS } /* ispatternwhitespace */, + { 77, 8886, 9305, 3, 4, UNI_SC__ORYA } /* sc=orya */, + { 0, 8854, 9734, 5, 3, UNI_DASH } /* dash=yes */, + { 0, 1497, 47, 10, 1, UNI_SM } /* category=sm */, + { 0, 9662, 9433, 3, 4, UNI_SD } /* sd=true */, + { 147, 6015, 6958, 12, 10, UNI_JT__U } /* joiningtype=nonjoining */, + { 0, 9620, 5591, 3, 13, UNI_ZL } /* gc=lineseparator */, + { 0, 5565, 6097, 13, 5, UNI_JG__GAMAL } /* joininggroup=gamal */, + { 1, 9365, 8894, 4, 4, UNI_LIMB } /* scx=limb */, + { 8, 8424, 5422, 6, 13, UNI_AEGEANNUMBERS } /* block=aegeannumbers */, + { 0, 1362, 7446, 24, 2, UNI_CCC__25 } /* canonicalcombiningclass=25 */, + { 2, 2453, 0, 21, 0, UNI_TERM } /* terminalpunctuation=t */, + { 3, 7025, 7462, 3, 1, UNI_IN__4 } /* in=4 */, + { 5, 9647, 7463, 3, 1, UNI_NV__3 } /* nv=3 */, + { 3, 5339, 36, 15, 1, UNI_SB__ST } /* sentencebreak=st */, + { 0, 1158, 7957, 3, 7, UNI_INTAGBANWA } /* intagbanwa */, + { 2, 8424, 2333, 6, 10, UNI_INGLAGOLITIC } /* block=glagolitic */, + { 259, 9365, 9217, 4, 4, UNI_LAO } /* scx=laoo */, + { 2, 9113, 78, 4, 2, UNI_CCC__AR } /* ccc=ar */, + { 13, 96, 0, 10, 0, UNI_XPOSIXALPHA } /* alphabetic */, + { 0, 7025, 9686, 3, 3, UNI_IN__3_DOT_2 } /* in=v32 */, + { 168, 8233, 8538, 7, 6, UNI_SC__KHOJ } /* script=khojki */, + { 2, 8886, 7796, 3, 4, UNI_BASS } /* sc=bass */, + { 0, 9623, 4954, 3, 7, UNI_JG__HEHGOAL } /* jg=hehgoal */, + { 132, 6828, 3182, 10, 18, UNI_BC__LRI } /* bidiclass=lefttorightisolate */, + { 4, 9946, 1146, 3, 3, UNI_SORA } /* issora */, + { 0, 9620, 112, 3, 2, UNI_SC } /* gc=sc */, + { 576, 8424, 3038, 6, 8, UNI_INETHIOPIC } /* block=ethiopic */, + { 2, 8424, 478, 6, 31, UNI_MATHALPHANUM } /* block=mathematicalalphanumericsymbols */, + { 0, 9261, 0, 3, 0, UNI_MRO } /* mro */, + { 0, 9365, 8550, 4, 6, UNI_LEPC } /* scx=lepcha */, + { 74, 8684, 0, 4, 0, UNI_POSIXXDIGIT } /* ahex */, + { 151, 184, 8045, 3, 6, UNI_CJKEXTF } /* iscjkextf */, + { 21, 8233, 8622, 7, 6, UNI_SC__TELU } /* script=telugu */, + { 1, 3671, 8128, 17, 7, UNI_MAKA } /* scriptextensions=makasar */, + { 39, 9093, 629, 4, 30, UNI_CJKEXTE } /* blk=cjkunifiedideographsextensione */, + { 212, 6231, 495, 12, 7, UNI_NT__NU } /* numerictype=numeric */, + { 0, 2646, 0, 19, 0, UNI_JAMOEXTA } /* hanguljamoextendeda */, + { 43, 184, 3110, 2, 11, UNI_GEORGIANSUP } /* isgeorgiansup */, + { 2, 184, 3964, 2, 16, UNI_LATIN1 } /* islatin1supplement */, + { 1, 5760, 7470, 13, 2, UNI_NV__50 } /* numericvalue=50 */, + { 304, 8163, 0, 7, 0, UNI_nfkcqc_values_index } /* nfkcqc= */, + { 147, 9365, 7311, 4, 9, UNI_TALU } /* scx=newtailue */, + { 0, 7419, 0, 8, 0, UNI_XIDS } /* xidstart */, + { 3, 2212, 1601, 4, 4, UNI_INHANGUL } /* inhangul */, + { 0, 184, 9157, 2, 4, UNI_GONG } /* isgong */, + { 1, 8854, 995, 5, 2, -UNI_DASH } /* dash=no */, + { 0, 5760, 8354, 13, 4, UNI_NV__6000 } /* numericvalue=6000 */, + { 1, 9093, 5526, 4, 13, UNI_GREEKEXT } /* blk=greekextended */, + { 0, 184, 6267, 2, 12, UNI_PHAISTOS } /* isphaistosdisc */, + { 25, 8886, 7048, 3, 10, UNI_SAUR } /* sc=saurashtra */, + { 4, 4705, 8629, 3, 3, UNI_THAA } /* isthaa */, + { 0, 8233, 8255, 8, 6, UNI_SIDD } /* script=siddham */, + { 36, 9620, 6613, 3, 11, UNI_LO } /* gc=otherletter */, + { 0, 8170, 26, 7, 1, UNI_DT__NONE } /* nfkdqc=y */, + { 139, 6918, 5847, 10, 12, UNI_LB__SY } /* linebreak=breaksymbols */, + { 0, 9647, 8985, 3, 4, UNI_NV__1_SLASH_64 } /* nv=1/64 */, + { 0, 8254, 0, 4, 0, UNI_SIDD } /* sidd */, + { 528, 184, 2086, 3, 10, UNI_CYRILLICSUP } /* iscyrillicsup */, + { 28, 5760, 8382, 13, 5, UNI_NV__60000 } /* numericvalue=60000 */, + { 12, 184, 250, 2, 33, UNI_MISCMATHSYMBOLSA } /* ismiscellaneousmathematicalsymbolsa */, + { 0, 8884, 7028, 5, 10, UNI_INSC__PUREKILLER } /* insc=purekiller */, + { 73, 5760, 7558, 13, 2, UNI_NV__13 } /* numericvalue=13 */, + { 3, 6338, 995, 11, 2, -UNI_XPOSIXALPHA } /* alphabetic=no */, + { 0, 9365, 4492, 4, 15, UNI_ARMI } /* scx=imperialaramaic */, + { 512, 3671, 8859, 17, 4, UNI_DOGR } /* scriptextensions=dogr */, + { 89, 9647, 8358, 3, 5, UNI_NV__30000 } /* nv=30000 */, + { 64, 8254, 0, 7, 0, UNI_SIDD } /* siddham */, + { 1, 9093, 4298, 5, 6, UNI_BRAI } /* blk=braille */, + { 134, 8424, 4989, 6, 6, UNI_KANGXI } /* block=kangxi */, + { 0, 113, 0, 25, 0, UNI_DIACRITICALS } /* combiningdiacriticalmarks */, + { 404, 9049, 9575, 4, 3, UNI_AGE__6_DOT_1 } /* age=6.1 */, + { 9, 184, 4462, 2, 14, UNI_GREXT } /* isgraphemeextend */, + { 256, 9365, 9401, 4, 4, UNI_TALE } /* scx=tale */, + { 4, 21, 5017, 2, 14, UNI_LATINEXTC } /* inlatinextendedc */, + { 8, 7128, 7411, 11, 8, UNI_WB__WSEGSPACE } /* wordbreak=wsegspace */, + { 513, 5213, 0, 14, 0, UNI_nfcqc_values_index } /* nfcquickcheck= */, + { 0, 184, 5325, 2, 13, UNI_QMARK } /* isquotationmark */, + { 0, 184, 7311, 2, 9, UNI_TALU } /* isnewtailue */, + { 0, 5907, 0, 12, 0, UNI_ETHIOPICEXTA } /* ethiopicexta */, + { 138, 2493, 18, 20, 1, UNI_VO__R } /* verticalorientation=r */, + { 514, 3868, 9777, 16, 2, UNI_ZP } /* generalcategory=zp */, + { 714, 8944, 0, 4, 0, UNI_TAKR } /* takr */, + { 0, 3671, 9293, 17, 4, UNI_OGAM } /* scriptextensions=ogam */, + { 0, 1362, 9545, 24, 3, UNI_CCC__IS } /* canonicalcombiningclass=240 */, + { 0, 9647, 7660, 3, 8, UNI_NV__3_SLASH_5 } /* nv=6.00e-01 */, + { 129, 8886, 2484, 3, 4, UNI_SC__MAND } /* sc=mand */, + { 249, 9659, 8864, 3, 5, -UNI_RI } /* ri=false */, + { 787, 1497, 32, 9, 2, UNI__PERL_SURROGATE } /* category=cs */, + { 0, 8233, 9205, 7, 4, UNI_SC__KNDA } /* script=knda */, + { 1, 8424, 3290, 6, 4, UNI_RUMI } /* block=rumi */, + { 99, 7419, 0, 9, 0, UNI_xids_values_index } /* xidstart= */, + { 12, 9237, 9734, 4, 3, UNI_LOE } /* loe=yes */, + { 327, 8598, 9734, 6, 3, UNI__PERL_PATWS } /* patws=yes */, + { 648, 1977, 9433, 22, 4, UNI__PERL_NCHAR } /* noncharactercodepoint=true */, + { 0, 9093, 8317, 4, 7, UNI_UCASEXT } /* blk=ucasext */, + { 0, 5339, 34, 14, 6, UNI_SB__EX } /* sentencebreak=extend */, + { 318, 8520, 9433, 6, 4, UNI_JOINC } /* joinc=true */, + { 0, 5835, 3, 12, 1, -UNI_BIDIC } /* bidicontrol=f */, + { 2, 9093, 539, 4, 30, UNI_CJKEXTB } /* blk=cjkunifiedideographsextensionb */, + { 0, 9593, 0, 3, 0, UNI_bc_values_index } /* bc= */, + { 96, 184, 9241, 2, 4, UNI_MEDF } /* ismedf */, + { 24, 5353, 0, 14, 0, UNI_ZS } /* spaceseparator */, + { 4, 9909, 8227, 3, 6, UNI_PHAG } /* isphagspa */, + { 0, 8332, 4808, 3, 13, UNI_ANCIENTSYMBOLS } /* isancientsymbols */, + { 24, 3002, 45, 18, 6, UNI_DT__COM } /* decompositiontype=compat */, + { 3, 2708, 80, 4, 8, UNI_ARABICMATH } /* inarabicmath */, + { 7, 9623, 8544, 3, 6, UNI_JG__LAMADH } /* jg=lamadh */, + { 69, 8879, 7357, 3, 8, UNI_PALM } /* inpalmyrene */, + { 0, 2148, 866, 3, 27, UNI_SUPPUAA } /* insupplementaryprivateuseareaa */, + { 1, 6005, 2086, 3, 7, UNI_INCYRILLIC } /* incyrillic */, + { 0, 9113, 8775, 5, 4, UNI_CCC__26 } /* ccc=ccc26 */, + { 91, 9647, 9033, 3, 4, UNI_NV__3_SLASH_80 } /* nv=3/80 */, + { 1, 6569, 0, 11, 0, UNI_MISCSYMBOLS } /* miscsymbols */, + { 3, 184, 2333, 2, 4, UNI_GLAG } /* isglag */, + { 21, 8960, 9734, 4, 3, UNI_IDS } /* ids=yes */, + { 0, 7025, 7548, 3, 3, UNI_IN__3_DOT_1 } /* in=3.1 */, + { 1, 8233, 1599, 7, 6, UNI_SC__HANG } /* script=hangul */, + { 13, 1911, 2768, 22, 10, UNI_INSC__TONELETTER } /* indicsyllabiccategory=toneletter */, + { 284, 9647, 7460, 3, 8, UNI_NV__1_SLASH_7 } /* nv=1.43e-01 */, + { 111, 6679, 8864, 11, 5, -UNI_SD } /* softdotted=false */, + { 222, 9647, 8782, 3, 2, UNI_NV__27 } /* nv=27 */, + { 149, 184, 1264, 2, 25, UNI_SUPERANDSUB } /* issuperscriptsandsubscripts */, + { 279, 8424, 8919, 6, 5, UNI_INOGHAM } /* block=ogham */, + { 0, 4849, 995, 14, 2, -UNI_CI } /* caseignorable=no */, + { 260, 184, 4388, 3, 14, UNI_CURRENCYSYMBOLS } /* iscurrencysymbols */, + { 10, 9728, 995, 3, 2, -UNI_VS } /* vs=no */, + { 0, 3868, 9769, 16, 2, UNI_CASEDLETTER } /* generalcategory=l_ */, + { 1, 5760, 7428, 13, 8, UNI_NV__1_SLASH_10 } /* numericvalue=1.00e-01 */, + { 0, 2779, 0, 9, 0, UNI_MONG } /* mongolian */, + { 1, 184, 8038, 3, 6, UNI_CJKEXTE } /* iscjkexte */, + { 2, 2148, 6691, 3, 10, UNI_INSORASOMPENG } /* insorasompeng */, + { 641, 9365, 8934, 4, 5, UNI_RUNR } /* scx=runic */, + { 0, 5760, 8376, 13, 5, UNI_NV__50000 } /* numericvalue=50000 */, + { 64, 8233, 9309, 7, 4, UNI_OSGE } /* script=osge */, + { 0, 9365, 2333, 4, 10, UNI_GLAG } /* scx=glagolitic */, + { 0, 9626, 6958, 3, 10, UNI_JT__U } /* jt=nonjoining */, + { 130, 9623, 6908, 3, 10, UNI_JG__KNOTTEDHEH } /* jg=knottedheh */, + { 809, 3671, 9261, 17, 4, UNI_MRO } /* scriptextensions=mroo */, + { 0, 8424, 6027, 6, 5, UNI_INKHMER } /* block=khmer */, + { 1, 3671, 4220, 17, 4, UNI_TANG } /* scriptextensions=tang */, + { 780, 3671, 8282, 17, 7, UNI_TGLG } /* scriptextensions=tagalog */, + { 0, 184, 4373, 3, 14, UNI_CONTROLPICTURES } /* iscontrolpictures */, + { 0, 9904, 5492, 5, 5, UNI_POSIXALNUM } /* posixalnum */, + { 0, 9093, 9453, 4, 3, UNI_INVAI } /* blk=vai */, + { 1571, 1362, 8715, 25, 4, UNI_CCC__14 } /* canonicalcombiningclass=ccc14 */, + { 0, 8886, 983, 3, 5, UNI_SC__GREK } /* sc=greek */, + { 0, 9647, 8675, 3, 4, UNI_NV__1_SLASH_12 } /* nv=1/12 */, + { 2, 349, 0, 33, 0, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* supplementalsymbolsandpictographs */, + { 4, 2142, 2394, 3, 19, UNI_INNYIAKENGPUACHUEHMONG } /* innyiakengpuachuehmong */, + { 34, 9647, 9590, 3, 3, UNI_NV__9_SLASH_2 } /* nv=9/2 */, + { 1320, 7128, 5919, 10, 12, UNI_WB__EX } /* wordbreak=extendnumlet */, + { 2, 8233, 8550, 7, 4, UNI_LEPC } /* script=lepc */, + { 210, 8886, 6991, 3, 7, UNI_SC__SOGD } /* sc=sogdian */, + { 6, 9365, 8058, 4, 7, UNI_DSRT } /* scx=deseret */, + { 0, 184, 283, 2, 33, UNI_MISCMATHSYMBOLSB } /* ismiscellaneousmathematicalsymbolsb */, + { 0, 8884, 4612, 5, 15, UNI_INSC__MODIFYINGLETTER } /* insc=modifyingletter */, + { 0, 3671, 9201, 17, 4, UNI_KHMR } /* scriptextensions=khmr */, + { 520, 3951, 325, 3, 3, UNI_ITAL } /* isital */, + { 9, 9623, 2561, 3, 3, UNI_JG__YEH } /* jg=yeh */, + { 416, 3868, 7098, 16, 10, UNI_CN } /* generalcategory=unassigned */, + { 0, 9377, 0, 4, 0, UNI_SHAW } /* shaw */, + { 11, 5760, 7692, 13, 8, UNI_NV__13_SLASH_2 } /* numericvalue=6.50e+00 */, + { 0, 6816, 4298, 3, 6, UNI_BRAI } /* inbraille */, + { 41, 3243, 3, 11, 1, -UNI_XPOSIXSPACE } /* whitespace=f */, + { 56, 9093, 2085, 4, 18, UNI_CYRILLICSUP } /* blk=cyrillicsupplement */, + { 1400, 1362, 5410, 24, 1, UNI_CCC__0 } /* canonicalcombiningclass=0 */, + { 17, 6918, 1696, 10, 2, UNI_LB__AI } /* linebreak=ai */, + { 1, 8233, 8568, 7, 4, UNI_LYDI } /* script=lydi */, + { 771, 3671, 9273, 17, 4, UNI_NARB } /* scriptextensions=narb */, + { 0, 4417, 0, 15, 0, UNI_DIACRITICALSEXT } /* diacriticalsext */, + { 44, 9608, 835, 3, 1, UNI_EA__W } /* ea=w */, + { 0, 8514, 0, 6, 0, UNI_HATR } /* hatran */, + { 0, 3671, 9081, 17, 4, UNI_AVST } /* scriptextensions=avst */, + { 22, 2453, 26, 20, 1, UNI_TERM } /* terminalpunctuation=y */, + { 0, 5565, 9369, 13, 4, UNI_JG__SEEN } /* joininggroup=seen */, + { 0, 8233, 6988, 7, 10, UNI_SOGO } /* script=oldsogdian */, + { 2, 6918, 5967, 10, 12, UNI_LB__HL } /* linebreak=hebrewletter */, + { 50, 8886, 4297, 3, 4, UNI_BRAI } /* sc=brai */, + { 2, 5760, 8400, 13, 3, UNI_NV__900 } /* numericvalue=900 */, + { 3, 9623, 5630, 3, 13, UNI_JG__MALAYALAMNNNA } /* jg=malayalamnnna */, + { 1, 9909, 83, 3, 2, UNI_PCM } /* ispcm */, + { 0, 1136, 26, 26, 1, UNI_DI } /* defaultignorablecodepoint=y */, + { 1, 1924, 0, 11, 0, UNI_LO } /* category=lo */, + { 3, 8233, 9297, 7, 4, UNI_OLCK } /* script=olck */, + { 3, 7892, 0, 8, 0, UNI_JAVA } /* javanese */, + { 73, 6828, 32, 10, 2, UNI_BC__CS } /* bidiclass=cs */, + { 0, 8886, 2741, 3, 4, UNI_MERO } /* sc=mero */, + { 782, 9647, 7684, 3, 8, UNI_NV__1_SLASH_160 } /* nv=6.25e-03 */, + { 0, 9365, 8205, 4, 7, UNI_OSMA } /* scx=osmanya */, + { 0, 9647, 5410, 3, 1, UNI_NV__0 } /* nv=0 */, + { 19, 8508, 995, 6, 2, -UNI_GREXT } /* grext=no */, + { 1, 3671, 6978, 17, 10, UNI_XPEO } /* scriptextensions=oldpersian */, + { 545, 1158, 4221, 3, 15, UNI_TANGUTCOMPONENTS } /* intangutcomponents */, + { 74, 3020, 0, 10, 0, UNI_DEVA } /* devanagari */, + { 515, 9113, 1189, 4, 3, UNI_CCC__214 } /* ccc=ata */, + { 0, 8854, 1, 5, 1, -UNI_DASH } /* dash=n */, + { 404, 1158, 8945, 3, 4, UNI_INTAKRI } /* intakri */, + { 513, 9153, 125, 4, 2, UNI_LB__CR } /* gcb=cr */, + { 4, 8886, 9081, 3, 4, UNI_AVST } /* sc=avst */, + { 304, 8233, 2741, 7, 4, UNI_MERO } /* script=mero */, + { 0, 9605, 7836, 3, 3, UNI_DT__FRA } /* dt=fra */, + { 0, 184, 1668, 2, 23, UNI_SUPPUNCTUATION } /* issupplementalpunctuation */, + { 0, 1497, 5199, 9, 14, UNI_SK } /* category=modifiersymbol */, + { 40, 9647, 9749, 3, 2, UNI_NV__48 } /* nv=48 */, + { 440, 5325, 995, 14, 2, -UNI_QMARK } /* quotationmark=no */, + { 1, 3671, 4492, 17, 15, UNI_ARMI } /* scriptextensions=imperialaramaic */, + { 0, 8424, 6382, 6, 11, UNI_DOMINO } /* block=dominotiles */, + { 0, 184, 8079, 2, 4, UNI_GRAN } /* isgran */, + { 0, 8960, 1, 4, 1, -UNI_IDS } /* ids=n */, + { 1550, 8233, 9353, 7, 4, UNI_RUNR } /* script=runr */, + { 2, 5760, 8464, 13, 2, UNI_NV__29 } /* numericvalue=29 */, + { 50, 9662, 1, 3, 1, -UNI_SD } /* sd=n */, + { 1, 7018, 9710, 10, 3, UNI_IN__6_DOT_2 } /* presentin=v62 */, + { 0, 9909, 131, 3, 3, UNI_PALM } /* ispalm */, + { 0, 3671, 9189, 17, 4, UNI_HMNP } /* scriptextensions=hmnp */, + { 0, 184, 9229, 2, 4, UNI_LINB } /* islinb */, + { 1, 8233, 8149, 7, 4, UNI_SC__MULT } /* script=mult */, + { 1230, 184, 8914, 2, 5, UNI_NSHU } /* isnushu */, + { 0, 184, 2067, 2, 7, UNI_RADICAL } /* isradical */, + { 386, 3671, 8514, 17, 6, UNI_HATR } /* scriptextensions=hatran */, + { 0, 8233, 4717, 7, 5, UNI_SC__TAML } /* script=tamil */, + { 162, 9065, 0, 4, 0, UNI_ARMI } /* armi */, + { 33, 8884, 4342, 5, 15, UNI_INSC__CONSONANTMEDIAL } /* insc=consonantmedial */, + { 0, 8406, 26, 6, 1, UNI_XPOSIXALPHA } /* alpha=y */, + { 1, 6371, 3, 11, 1, -UNI_DEP } /* deprecated=f */, + { 0, 1362, 1149, 24, 2, UNI_CCC__BL } /* canonicalcombiningclass=bl */, + { 0, 5786, 0, 13, 0, UNI_VERTICALFORMS } /* verticalforms */, + { 0, 9121, 995, 4, 2, -UNI_CWL } /* cwl=no */, + { 1, 5565, 6878, 13, 10, UNI_JG__DALATHRISH } /* joininggroup=dalathrish */, + { 0, 8233, 9301, 7, 4, UNI_ORKH } /* script=orkh */, + { 0, 9620, 5500, 3, 13, UNI_ME } /* gc=enclosingmark */, + { 5, 4975, 0, 7, 0, UNI_KANASUP } /* kanasup */, + { 0, 9093, 2085, 4, 21, UNI_CYRILLICSUP } /* blk=cyrillicsupplementary */, + { 275, 3227, 0, 9, 0, UNI_Z } /* separator */, + { 0, 9137, 9433, 4, 4, UNI_DEP } /* dep=true */, + { 1297, 9365, 1188, 4, 8, UNI_KANA } /* scx=katakana */, + { 12, 9593, 2373, 3, 20, UNI_BC__LRE } /* bc=lefttorightembedding */, + { 1314, 9904, 96, 5, 5, UNI_POSIXALPHA } /* posixalpha */, + { 3, 8886, 8247, 3, 7, UNI_SHAW } /* sc=shavian */, + { 138, 9365, 8929, 4, 5, UNI_OSGE } /* scx=osage */, + { 8, 8424, 4762, 6, 8, UNI_VEDICEXT } /* block=vedicext */, + { 0, 5565, 5097, 13, 4, UNI_JG__BETH } /* joininggroup=beth */, + { 156, 9909, 467, 7, 5, UNI_POSIXPUNCT } /* isposixpunct */, + { 1, 5859, 0, 12, 0, UNI_CHESSSYMBOLS } /* chesssymbols */, + { 0, 4778, 7981, 3, 7, UNI_UGAR } /* isugaritic */, + { 177, 184, 7876, 2, 8, UNI_JAMOEXTA } /* isjamoexta */, + { 0, 8233, 8944, 7, 4, UNI_SC__TAKR } /* script=takr */, + { 3, 8233, 382, 7, 4, UNI_EGYP } /* script=egyp */, + { 0, 8496, 0, 6, 0, UNI_cwkcf_values_index } /* cwkcf= */, + { 3, 184, 7058, 2, 10, UNI_SMALLFORMS } /* issmallforms */, + { 3, 8510, 9734, 4, 3, UNI_EXT } /* ext=yes */, + { 0, 4792, 0, 15, 0, UNI_ZANB } /* zanabazarsquare */, + { 2, 7419, 9734, 9, 3, UNI_XIDS } /* xidstart=yes */, + { 0, 6885, 2431, 3, 3, UNI_HATR } /* ishatr */, + { 0, 2006, 0, 4, 0, UNI_MODI } /* modi */, + { 29, 9647, 7444, 3, 8, UNI_NV__1_SLASH_8 } /* nv=1.25e-01 */, + { 1, 6183, 0, 4, 0, UNI_MEND } /* mend */, + { 0, 3671, 9453, 17, 3, UNI_VAI } /* scriptextensions=vai */, + { 694, 1084, 3, 26, 1, -UNI_CWKCF } /* changeswhennfkccasefolded=f */, + { 0, 9049, 9551, 4, 3, UNI_AGE__3_DOT_2 } /* age=3.2 */, + { 0, 8884, 8331, 5, 7, UNI_INSC__VISARGA } /* insc=visarga */, + { 0, 3308, 0, 12, 0, UNI_SMALLKANAEXT } /* smallkanaext */, + { 0, 7018, 7098, 10, 10, UNI_AGE__NA } /* presentin=unassigned */, + { 2, 9125, 9734, 4, 3, UNI_CWT } /* cwt=yes */, + { 0, 3671, 8550, 17, 6, UNI_LEPC } /* scriptextensions=lepcha */, + { 1, 3868, 133, 16, 4, UNI_M } /* generalcategory=mark */, + { 0, 3868, 467, 16, 11, UNI_P } /* generalcategory=punctuation */, + { 3, 9946, 2212, 3, 6, UNI_SINH } /* issinhala */, + { 1356, 2893, 0, 19, 0, UNI_SUPARROWSC } /* supplementalarrowsc */, + { 849, 8079, 0, 4, 0, UNI_GRAN } /* gran */, + { 2, 9365, 9253, 4, 4, UNI_MIAO } /* scx=miao */, + { 1, 2148, 894, 3, 27, UNI_SUPPUAB } /* insupplementaryprivateuseareab */, + { 0, 8592, 995, 6, 2, UNI_DT__CAN } /* nfdqc=no */, + { 17, 5760, 7628, 13, 8, UNI_NV__3_SLASH_64 } /* numericvalue=4.69e-02 */, + { 518, 8100, 9433, 7, 4, UNI_HYPHEN } /* hyphen=true */, + { 3, 9593, 6255, 3, 12, UNI_BC__ON } /* bc=otherneutral */, + { 2, 8233, 6183, 7, 12, UNI_MEND } /* script=mendekikakui */, + { 41, 9093, 8121, 4, 7, UNI_INLINEARA } /* blk=lineara */, + { 162, 9137, 995, 4, 2, -UNI_DEP } /* dep=no */, + { 0, 9647, 7603, 3, 2, UNI_NV__24 } /* nv=24 */, + { 1287, 8100, 3, 7, 1, -UNI_HYPHEN } /* hyphen=f */, + { 1, 8338, 1, 7, 1, -UNI_XPOSIXSPACE } /* wspace=n */, + { 1, 184, 3020, 2, 18, UNI_DEVANAGARIEXT } /* isdevanagariextended */, + { 0, 9623, 9477, 3, 4, UNI_JG__ZAIN } /* jg=zain */, + { 0, 184, 2006, 2, 14, UNI_LM } /* ismodifierletter */, + { 13, 9113, 8825, 5, 4, UNI_CCC__36 } /* ccc=ccc36 */, + { 284, 9365, 5311, 4, 14, UNI_PHLP } /* scx=psalterpahlavi */, + { 83, 9093, 4946, 4, 4, UNI_INCHAM } /* blk=cham */, + { 0, 8332, 5493, 3, 4, UNI_XPOSIXALNUM } /* isalnum */, + { 0, 3688, 1, 17, 1, -UNI_STERM } /* sentenceterminal=n */, + { 2, 184, 1767, 2, 2, UNI_NL } /* isnl */, + { 36, 9365, 2169, 4, 11, UNI_MTEI } /* scx=meeteimayek */, + { 4, 7018, 9587, 10, 3, UNI_IN__9 } /* presentin=9.0 */, + { 3, 6888, 3, 10, 1, -UNI_DIA } /* diacritic=f */, + { 266, 21, 1188, 2, 26, UNI_KATAKANAEXT } /* inkatakanaphoneticextensions */, + { 7, 9365, 3729, 5, 10, UNI_SGNW } /* scx=signwriting */, + { 303, 9365, 3730, 5, 3, UNI_SGNW } /* scx=sgnw */, + { 9, 1362, 8815, 25, 4, UNI_CCC__34 } /* canonicalcombiningclass=ccc34 */, + { 818, 184, 3308, 2, 12, UNI_SMALLKANAEXT } /* issmallkanaext */, + { 2, 184, 697, 2, 2, UNI_MN } /* ismn */, + { 3, 184, 8934, 2, 5, UNI_RUNR } /* isrunic */, + { 4, 184, 4267, 2, 8, UNI_BAMUMSUP } /* isbamumsup */, + { 14, 9093, 3964, 4, 16, UNI_LATIN1 } /* blk=latin1supplement */, + { 0, 1057, 8864, 27, 5, -UNI_PCM } /* prependedconcatenationmark=false */, + { 1, 8886, 7956, 3, 8, UNI_SC__TAGB } /* sc=tagbanwa */, + { 0, 3868, 1141, 16, 2, UNI_TITLE } /* generalcategory=lt */, + { 859, 8886, 8058, 3, 7, UNI_DSRT } /* sc=deseret */, + { 3, 1362, 8449, 25, 4, UNI_CCC__11 } /* canonicalcombiningclass=ccc11 */, + { 0, 4220, 0, 4, 0, UNI_TANG } /* tang */, + { 0, 5565, 5931, 13, 12, UNI_JG__FINALSEMKATH } /* joininggroup=finalsemkath */, + { 821, 5565, 87, 13, 2, UNI_JG__HE } /* joininggroup=he */, + { 1090, 184, 9485, 2, 4, UNI_QAAI } /* iszinh */, + { 7, 8424, 6723, 6, 11, UNI_INSYLOTINAGRI } /* block=sylotinagri */, + { 1066, 183, 0, 20, 0, UNI_MISCSYMBOLS } /* miscellaneoussymbols */, + { 0, 1, 0, 1, 0, UNI_N } /* n */, + { 8, 8884, 6225, 5, 6, UNI_LB__ZWJ } /* insc=joiner */, + { 1544, 8424, 949, 6, 27, UNI_ALPHABETICPF } /* block=alphabeticpresentationforms */, + { 25, 184, 1856, 2, 11, UNI_NUMBERFORMS } /* isnumberforms */, + { 1, 9623, 4562, 3, 3, UNI_JG__SAD } /* jg=sad */, + { 10, 5883, 0, 12, 0, UNI_CYRILLICEXTB } /* cyrillicextb */, + { 4, 1497, 7, 10, 1, UNI_SC } /* category=sc */, + { 0, 9623, 6657, 3, 11, UNI_JG__ROHINGYAYEH } /* jg=rohingyayeh */, + { 3, 7018, 7446, 10, 1, UNI_IN__2 } /* presentin=2 */, + { 74, 3688, 9734, 17, 3, UNI_STERM } /* sentenceterminal=yes */, + { 16, 9093, 1386, 4, 24, UNI_CJKSYMBOLS } /* blk=cjksymbolsandpunctuation */, + { 161, 9165, 0, 4, 0, UNI_GREK } /* grek */, + { 20, 6005, 6870, 4, 8, UNI_COMPATJAMO } /* incompatjamo */, + { 0, 45, 0, 2, 0, UNI_CO } /* co */, + { 50, 8233, 8065, 7, 4, UNI_ELBA } /* script=elba */, + { 0, 9620, 1844, 3, 2, UNI_PC } /* gc=pc */, + { 1, 9365, 8072, 4, 4, UNI_ELYM } /* scx=elym */, + { 1, 9608, 66, 3, 1, UNI_EA__H } /* ea=h */, + { 32, 9365, 9345, 4, 4, UNI_RJNG } /* scx=rjng */, + { 0, 2212, 4962, 3, 13, UNI_HIGHSURROGATES } /* inhighsurrogates */, + { 0, 6382, 0, 11, 0, UNI_DOMINO } /* dominotiles */, + { 8, 4241, 8060, 4, 5, UNI_DSRT } /* indeseret */, + { 137, 9620, 262, 3, 2, UNI_SM } /* gc=sm */, + { 0, 9593, 3569, 3, 17, UNI_BC__ES } /* bc=europeanseparator */, + { 0, 9113, 8352, 4, 3, UNI_CCC__216 } /* ccc=216 */, + { 3, 8424, 831, 6, 6, UNI_ARROWS } /* block=arrows */, + { 0, 184, 3038, 2, 18, UNI_ETHIOPICSUP } /* isethiopicsupplement */, + { 0, 9946, 8255, 3, 3, UNI_SIDD } /* issidd */, + { 9, 8879, 2373, 5, 4, UNI_INPC__LEFT } /* inpc=left */, + { 0, 8844, 36, 5, 1, UNI_CWCF } /* cwcf=t */, + { 0, 7025, 7508, 3, 3, UNI_IN__2 } /* in=2.0 */, + { 0, 1735, 9433, 22, 4, UNI_CWCM } /* changeswhencasemapped=true */, + { 1, 184, 6027, 2, 5, UNI_KHMR } /* iskhmer */, + { 0, 7128, 3254, 10, 17, UNI_RI } /* wordbreak=regionalindicator */, + { 0, 1136, 36, 26, 1, UNI_DI } /* defaultignorablecodepoint=t */, + { 0, 8640, 8864, 6, 5, -UNI_XPOSIXUPPER } /* upper=false */, + { 28, 9113, 2912, 4, 18, UNI_CCC__216 } /* ccc=attachedaboveright */, + { 20, 9365, 9329, 4, 4, UNI_PRTI } /* scx=prti */, + { 1, 1482, 2473, 24, 12, UNI_INPC__TOPANDBOTTOM } /* indicpositionalcategory=topandbottom */, + { 0, 3671, 9469, 17, 4, UNI_XSUX } /* scriptextensions=xsux */, + { 1, 3671, 3038, 17, 8, UNI_ETHI } /* scriptextensions=ethiopic */, + { 3, 8424, 8652, 6, 6, UNI_INWANCHO } /* block=wancho */, + { 0, 6928, 3, 10, 1, -UNI_XPOSIXLOWER } /* lowercase=f */, + { 0, 9093, 1955, 4, 22, UNI_MISCTECHNICAL } /* blk=miscellaneoustechnical */, + { 546, 2212, 1601, 4, 21, UNI_COMPATJAMO } /* inhangulcompatibilityjamo */, + { 30, 4580, 6581, 3, 10, UNI_MYANMAREXTA } /* inmyanmarexta */, + { 0, 9903, 4828, 6, 6, UNI_XPOSIXXDIGIT } /* xposixxdigit */, + { 1, 1735, 0, 21, 0, UNI_CWCM } /* changeswhencasemapped */, + { 0, 8849, 995, 5, 2, -UNI_CWCM } /* cwcm=no */, + { 1843, 1773, 9433, 6, 4, UNI_CASED } /* cased=true */, + { 0, 8424, 4092, 6, 16, UNI_MISCMATHSYMBOLSB } /* block=miscmathsymbolsb */, + { 606, 5799, 0, 12, 0, UNI_ALPHABETICPF } /* alphabeticpf */, + { 890, 3868, 25, 16, 1, UNI_S } /* generalcategory=s */, + { 641, 8510, 3, 4, 1, -UNI_EXT } /* ext=f */, + { 3, 8332, 7101, 3, 7, UNI_ASSIGNED } /* isassigned */, + { 50, 7025, 9716, 3, 3, UNI_IN__7 } /* in=v70 */, + { 0, 5565, 5125, 13, 4, UNI_JG__HETH } /* joininggroup=heth */, + { 640, 8233, 6159, 7, 12, UNI_SC__GONM } /* script=masaramgondi */, + { 72, 9629, 4195, 3, 9, UNI_LB__EM } /* lb=emodifier */, + { 2, 184, 9161, 2, 4, UNI_GONM } /* isgonm */, + { 0, 9093, 3773, 5, 7, UNI_INBOPOMOFO } /* blk=bopomofo */, + { 0, 5435, 9734, 13, 3, UNI_BIDIM } /* bidimirrored=yes */, + { 12, 184, 1188, 2, 26, UNI_KATAKANAEXT } /* iskatakanaphoneticextensions */, + { 1057, 4580, 2171, 4, 19, UNI_MEETEIMAYEKEXT } /* inmeeteimayekextensions */, + { 0, 9093, 4989, 4, 14, UNI_KANGXI } /* blk=kangxiradicals */, + { 0, 3671, 6183, 17, 12, UNI_MEND } /* scriptextensions=mendekikakui */, + { 13, 6371, 26, 11, 1, UNI_DEP } /* deprecated=y */, + { 0, 3671, 9181, 17, 4, UNI_HLUW } /* scriptextensions=hluw */, + { 0, 9365, 6183, 4, 4, UNI_MEND } /* scx=mend */, + { 20, 9093, 983, 4, 5, UNI_INGREEK } /* blk=greek */, + { 0, 5565, 2127, 13, 21, UNI_JG__HANIFIROHINGYAKINNAYA } /* joininggroup=hanifirohingyakinnaya */, + { 0, 8233, 9197, 7, 4, UNI_SC__KALI } /* script=kali */, + { 0, 1003, 0, 11, 0, UNI_ENCLOSEDCJK } /* enclosedcjk */, + { 1, 8886, 8324, 3, 7, UNI_ZZZZ } /* sc=unknown */, + { 4, 184, 5617, 2, 9, UNI_MLYM } /* ismalayalam */, + { 0, 5565, 9341, 13, 4, UNI_JG__QAPH } /* joininggroup=qaph */, + { 0, 9365, 8065, 4, 7, UNI_ELBA } /* scx=elbasan */, + { 164, 3671, 3730, 18, 3, UNI_SGNW } /* scriptextensions=sgnw */, + { 1, 1867, 0, 12, 0, UNI_DIACRITICALS } /* diacriticals */, + { 1, 9365, 689, 4, 9, UNI_XSUX } /* scx=cuneiform */, + { 0, 8874, 995, 5, 2, -UNI_IDST } /* idst=no */, + { 3628, 9365, 7964, 4, 8, UNI_TFNG } /* scx=tifinagh */, + { 1, 1576, 0, 18, 0, UNI_GEOMETRICSHAPESEXT } /* geometricshapesext */, + { 0, 8219, 1, 7, 1, -UNI_PATSYN } /* patsyn=n */, + { 1301, 8406, 3, 6, 1, -UNI_XPOSIXALPHA } /* alpha=f */, + { 12, 21, 1622, 2, 23, UNI_LATINEXTADDITIONAL } /* inlatinextendedadditional */, + { 0, 8886, 8679, 3, 5, UNI_SC__ADLM } /* sc=adlam */, + { 0, 7932, 36, 8, 1, UNI_RADICAL } /* radical=t */, + { 0, 6316, 0, 3, 0, UNI_IDC } /* idc */, + { 278, 8604, 1, 6, 1, -UNI_QMARK } /* qmark=n */, + { 2, 9049, 9445, 4, 4, UNI_AGE__12 } /* age=v120 */, + { 0, 8332, 977, 3, 16, UNI_ANCIENTGREEKMUSIC } /* isancientgreekmusic */, + { 440, 8424, 6978, 6, 10, UNI_INOLDPERSIAN } /* block=oldpersian */, + { 520, 9781, 1472, 6, 9, UNI__PERL_SURROGATE } /* _perl_surrogate */, + { 739, 6918, 4631, 10, 2, UNI_LB__QU } /* linebreak=qu */, + { 0, 8233, 7804, 7, 8, UNI_SC__BUGI } /* script=buginese */, + { 2, 6371, 9734, 11, 3, UNI_DEP } /* deprecated=yes */, + { 2049, 9909, 96, 7, 5, UNI_POSIXALPHA } /* isposixalpha */, + { 2, 9365, 8502, 4, 6, UNI_GOTH } /* scx=gothic */, + { 0, 1057, 0, 26, 0, UNI_PCM } /* prependedconcatenationmark */, + { 1, 9731, 6415, 3, 11, UNI_WB__DQ } /* wb=doublequote */, + { 1, 3671, 1845, 17, 6, UNI_ZYYY } /* scriptextensions=common */, + { 0, 6828, 9638, 10, 3, UNI_BC__LRO } /* bidiclass=lro */, + { 3, 5085, 8144, 4, 5, UNI_INMARCHEN } /* inmarchen */, + { 161, 184, 1824, 3, 18, UNI_CJKCOMPATIDEOGRAPHS } /* iscjkcompatideographs */, + { 523, 2142, 1857, 3, 10, UNI_NUMBERFORMS } /* innumberforms */, + { 0, 3671, 9453, 17, 4, UNI_VAI } /* scriptextensions=vaii */, + { 0, 8233, 2353, 7, 20, UNI_PHLI } /* script=inscriptionalpahlavi */, + { 3, 1497, 4140, 9, 16, UNI_PO } /* category=otherpunctuation */, + { 768, 9647, 7452, 3, 8, UNI_NV__1_SLASH_80 } /* nv=1.25e-02 */, + { 2090, 1362, 7659, 24, 2, UNI_CCC__16 } /* canonicalcombiningclass=16 */, + { 644, 8879, 2379, 5, 5, UNI_INPC__RIGHT } /* inpc=right */, + { 130, 9093, 3884, 4, 11, UNI_GEORGIANEXT } /* blk=georgianext */, + { 14, 8424, 2779, 6, 19, UNI_MONGOLIANSUP } /* block=mongoliansupplement */, + { 0, 9365, 7008, 4, 10, UNI_PHNX } /* scx=phoenician */, + { 269, 8886, 9377, 3, 4, UNI_SHAW } /* sc=shaw */, + { 2117, 8886, 8240, 3, 7, UNI_SC__SHRD } /* sc=sharada */, + { 0, 184, 7128, 2, 4, UNI_XPOSIXWORD } /* isword */, + { 0, 8121, 0, 7, 0, UNI_LINA } /* lineara */, + { 0, 184, 6898, 2, 4, UNI_KHAR } /* iskhar */, + { 0, 5227, 26, 14, 1, UNI_NFDQC__Y } /* nfdquickcheck=y */, + { 0, 8424, 0, 6, 0, UNI_blk_values_index } /* block= */, + { 98, 8233, 6992, 8, 6, UNI_SC__SOGD } /* script=sogdian */, + { 776, 7108, 9734, 10, 3, UNI_XPOSIXUPPER } /* uppercase=yes */, + { 0, 5339, 9773, 14, 2, UNI_SB__XX } /* sentencebreak=xx */, + { 3, 8884, 7780, 5, 8, UNI_INSC__AVAGRAHA } /* insc=avagraha */, + { 2952, 4705, 4221, 3, 5, UNI_TANG } /* istangut */, + { 0, 3671, 7365, 17, 4, UNI_PAUC } /* scriptextensions=pauc */, + { 0, 9093, 7338, 4, 9, UNI_INOLDPERMIC } /* blk=oldpermic */, + { 0, 9093, 2533, 5, 5, UNI_INBRAHMI } /* blk=brahmi */, + { 0, 6918, 3254, 10, 17, UNI_RI } /* linebreak=regionalindicator */, + { 0, 5760, 7652, 13, 8, UNI_NV__7_SLASH_12 } /* numericvalue=5.83e-01 */, + { 4, 8233, 9057, 7, 4, UNI_AHOM } /* script=ahom */, + { 150, 9647, 7459, 3, 2, UNI_NV__21 } /* nv=21 */, + { 0, 184, 9165, 2, 4, UNI_GREK } /* isgrek */, + { 3, 5760, 9751, 13, 2, UNI_NV__49 } /* numericvalue=49 */, + { 2025, 8247, 0, 7, 0, UNI_SHAW } /* shavian */, + { 0, 9113, 8467, 5, 5, UNI_CCC__130 } /* ccc=ccc130 */, + { 310, 2085, 0, 8, 0, UNI_CYRL } /* cyrillic */, + { 4, 5565, 6778, 13, 10, UNI_JG__AFRICANFEH } /* joininggroup=africanfeh */, + { 0, 4705, 7957, 3, 7, UNI_TAGB } /* istagbanwa */, + { 0, 184, 1014, 2, 6, UNI_L } /* isletter */, + { 0, 1057, 3, 27, 1, -UNI_PCM } /* prependedconcatenationmark=f */, + { 0, 9731, 5943, 3, 12, UNI_WB__EB } /* wb=glueafterzwj */, + { 208, 1823, 0, 22, 0, UNI_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatideographssup */, + { 4219, 1362, 8800, 25, 4, UNI_CCC__31 } /* canonicalcombiningclass=ccc31 */, + { 0, 184, 9108, 2, 2, UNI_MC } /* ismc */, + { 0, 1057, 0, 27, 0, UNI_pcm_values_index } /* prependedconcatenationmark= */, + { 0, 5760, 9041, 13, 4, UNI_NV__7_SLASH_12 } /* numericvalue=7/12 */, + { 118, 9113, 8820, 5, 4, UNI_CCC__35 } /* ccc=ccc35 */, + { 208, 6991, 0, 4, 0, UNI_SOGD } /* sogd */, + { 0, 8233, 7956, 7, 4, UNI_SC__TAGB } /* script=tagb */, + { 6, 8233, 8622, 7, 4, UNI_SC__TELU } /* script=telu */, + { 1603, 4828, 0, 6, 0, UNI_XPOSIXXDIGIT } /* xdigit */, + { 1, 184, 3290, 2, 18, UNI_RUMI } /* isruminumeralsymbols */, + { 0, 8424, 8247, 6, 7, UNI_SHAW } /* block=shavian */, + { 0, 3128, 26, 18, 1, UNI_IDSB } /* idsbinaryoperator=y */, + { 4, 184, 1257, 2, 2, UNI_UPPERCASELETTER } /* islu */, + { 1, 3671, 4717, 17, 5, UNI_TAML } /* scriptextensions=tamil */, + { 0, 5760, 7548, 13, 8, UNI_NV__1_SLASH_32 } /* numericvalue=3.12e-02 */, + { 4, 8684, 9734, 5, 3, UNI_POSIXXDIGIT } /* ahex=yes */, + { 2, 8233, 1192, 7, 4, UNI_SC__KANA } /* script=kana */, + { 8, 2212, 2129, 4, 12, UNI_INHANIFIROHINGYA } /* inhanifirohingya */, + { 3440, 6194, 8920, 3, 4, UNI_INOGHAM } /* inogham */, + { 169, 8886, 8093, 3, 7, UNI_SC__HANO } /* sc=hanunoo */, + { 11, 8424, 1030, 6, 27, UNI_OCR } /* block=opticalcharacterrecognition */, + { 1, 8424, 6808, 6, 10, UNI_ASCII } /* block=basiclatin */, + { 4, 6918, 7924, 10, 8, UNI_LB__NL } /* linebreak=nextline */, + { 4359, 9365, 8502, 4, 4, UNI_GOTH } /* scx=goth */, + { 8, 8879, 6647, 3, 10, UNI_INPAHAWHHMONG } /* inpahawhhmong */, + { 137, 9946, 4205, 3, 8, UNI_SYRIACSUP } /* issyriacsup */, + { 0, 9725, 409, 3, 2, UNI_VO__TR } /* vo=tr */, + { 0, 7018, 7495, 10, 1, UNI_IN__7 } /* presentin=7 */, + { 3, 184, 1244, 3, 19, UNI_CE } /* iscompositionexclusion */, + { 1155, 9620, 598, 3, 2, UNI_XPOSIXCNTRL } /* gc=cc */, + { 30, 1362, 8455, 25, 4, UNI_CCC__12 } /* canonicalcombiningclass=ccc12 */, + { 2329, 6918, 9755, 10, 2, UNI_LB__BK } /* linebreak=bk */, + { 265, 184, 1622, 2, 5, UNI_LATN } /* islatin */, + { 0, 3002, 7, 18, 3, UNI_DT__CAN } /* decompositiontype=can */, + { 14, 1158, 8940, 3, 4, UNI_INTAILE } /* intaile */, + { 1047, 8424, 6690, 6, 11, UNI_INSORASOMPENG } /* block=sorasompeng */, + { 10, 1735, 9734, 22, 3, UNI_CWCM } /* changeswhencasemapped=yes */, + { 4353, 9365, 2837, 5, 8, UNI_SUND } /* scx=sundanese */, + { 0, 2333, 0, 10, 0, UNI_GLAG } /* glagolitic */, + { 0, 9946, 6648, 3, 3, UNI_SHAW } /* isshaw */, + { 68, 2204, 6990, 4, 8, UNI_SOGO } /* isoldsogdian */, + { 2, 3671, 8628, 17, 6, UNI_THAA } /* scriptextensions=thaana */, + { 18, 9313, 26, 4, 1, UNI_PCM } /* pcm=y */, + { 0, 1057, 9734, 27, 3, UNI_PCM } /* prependedconcatenationmark=yes */, + { 4, 6005, 43, 3, 25, UNI_CJKCOMPATIDEOGRAPHS } /* incjkcompatibilityideographs */, + { 0, 7128, 9611, 10, 3, UNI_WB__EB } /* wordbreak=ebg */, + { 29, 9620, 467, 3, 5, UNI_P } /* gc=punct */, + { 0, 8424, 4657, 6, 15, UNI_NARB } /* block=oldnortharabian */, + { 67, 184, 0, 4, 0, UNI_CE } /* isce */, + { 3, 1386, 0, 24, 0, UNI_CJKSYMBOLS } /* cjksymbolsandpunctuation */, + { 0, 8233, 8929, 7, 5, UNI_OSGE } /* script=osage */, + { 0, 8886, 6051, 3, 4, UNI_SC__MAHJ } /* sc=mahj */, + { 0, 6918, 6459, 10, 11, UNI_LB__IN } /* linebreak=inseperable */, + { 4104, 8424, 4597, 6, 15, UNI_MISCPICTOGRAPHS } /* block=miscpictographs */, + { 0, 7018, 7604, 10, 3, UNI_IN__4 } /* presentin=4.0 */, + { 0, 9365, 9386, 5, 3, UNI_SHRD } /* scx=shrd */, + { 5, 2212, 1459, 3, 23, UNI_HIGHPUSURROGATES } /* inhighprivateusesurrogates */, + { 2166, 8424, 1851, 6, 16, UNI_INDICNUMBERFORMS } /* block=indicnumberforms */, + { 3073, 6005, 2065, 3, 13, UNI_CJKRADICALSSUP } /* incjkradicalssup */, + { 2, 9153, 406, 4, 7, UNI_GCB__CN } /* gcb=control */, + { 3, 9049, 9680, 4, 3, UNI_AGE__3 } /* age=v30 */, + { 0, 8072, 0, 7, 0, UNI_ELYM } /* elymaic */, + { 0, 1497, 9775, 9, 2, UNI_ZL } /* category=zl */, + { 3, 8886, 5967, 3, 6, UNI_HEBR } /* sc=hebrew */, + { 1, 9626, 7, 3, 1, UNI_JT__C } /* jt=c */, + { 53, 2043, 0, 21, 0, UNI_CJKCOMPATFORMS } /* cjkcompatibilityforms */, + { 5324, 2836, 0, 19, 0, UNI_SUNDANESESUP } /* sundanesesupplement */, + { 2272, 9626, 6426, 3, 11, UNI_JT__D } /* jt=dualjoining */, + { 0, 3868, 48, 16, 1, UNI_P } /* generalcategory=p */, + { 1115, 9623, 6878, 3, 10, UNI_JG__DALATHRISH } /* jg=dalathrish */, + { 0, 9365, 6978, 4, 10, UNI_XPEO } /* scx=oldpersian */, + { 4, 8886, 9069, 3, 4, UNI_SC__ARMN } /* sc=armn */, + { 4272, 184, 8002, 2, 4, UNI_BENG } /* isbeng */, + { 288, 7804, 0, 8, 0, UNI_BUGI } /* buginese */, + { 0, 9620, 2006, 3, 14, UNI_LM } /* gc=modifierletter */, + { 0, 9731, 5520, 3, 5, UNI_WB__EB } /* wb=ebase */, + { 1, 8424, 8289, 6, 7, UNI_INTAITHAM } /* block=taitham */, + { 0, 3671, 5967, 17, 4, UNI_HEBR } /* scriptextensions=hebr */, + { 4105, 8338, 0, 6, 0, UNI_XPOSIXSPACE } /* wspace */, + { 0, 1856, 0, 11, 0, UNI_NUMBERFORMS } /* numberforms */, + { 1162, 9113, 2912, 4, 13, UNI_CCC__214 } /* ccc=attachedabove */, + { 6164, 1362, 5539, 24, 13, UNI_CCC__IS } /* canonicalcombiningclass=iotasubscript */, + { 214, 8869, 8864, 5, 5, -UNI_IDSB } /* idsb=false */, + { 5, 8886, 2409, 3, 4, UNI_SC__MONG } /* sc=mong */, + { 7, 9093, 4372, 4, 15, UNI_CONTROLPICTURES } /* blk=controlpictures */, + { 0, 9365, 8282, 4, 7, UNI_TGLG } /* scx=tagalog */, + { 11, 5760, 7668, 13, 8, UNI_NV__5_SLASH_8 } /* numericvalue=6.25e-01 */, + { 25, 8233, 5967, 7, 4, UNI_HEBR } /* script=hebr */, + { 4, 7018, 8997, 10, 4, UNI_IN__11 } /* presentin=11.0 */, + { 0, 8424, 6183, 6, 12, UNI_INMENDEKIKAKUI } /* block=mendekikakui */, + { 1, 5513, 9734, 13, 3, UNI_GRBASE } /* graphemebase=yes */, + { 0, 3671, 8430, 17, 4, UNI_CARI } /* scriptextensions=cari */, + { 9, 8886, 7250, 5, 7, UNI_SC__SIND } /* sc=khudawadi */, + { 7, 1057, 9433, 27, 4, UNI_PCM } /* prependedconcatenationmark=true */, + { 0, 9093, 316, 4, 33, UNI_SUPMATHOPERATORS } /* blk=supplementalmathematicaloperators */, + { 0, 5760, 8388, 13, 2, UNI_NV__70 } /* numericvalue=70 */, + { 2048, 1450, 4936, 5, 11, UNI_INGREEK } /* ingreekandcoptic */, + { 1571, 8332, 183, 4, 2, UNI_ARMI } /* isarmi */, + { 1, 9093, 8550, 4, 6, UNI_INLEPCHA } /* blk=lepcha */, + { 0, 184, 690, 3, 29, UNI_CUNEIFORMNUMBERS } /* iscuneiformnumbersandpunctuation */, + { 0, 9093, 2930, 4, 11, UNI_CHEROKEESUP } /* blk=cherokeesup */, + { 21, 1482, 2473, 24, 20, UNI_INPC__TOPANDBOTTOMANDRIGHT } /* indicpositionalcategory=topandbottomandright */, + { 65, 9623, 2147, 3, 3, UNI_JG__AIN } /* jg=ain */, + { 1589, 8886, 4267, 3, 4, UNI_BAMU } /* sc=bamu */, + { 0, 1482, 3350, 24, 12, UNI_INPC__LEFTANDRIGHT } /* indicpositionalcategory=leftandright */, + { 150, 6315, 0, 11, 0, UNI_XIDC } /* xidcontinue */, + { 1, 62, 0, 5, 0, UNI_XPOSIXGRAPH } /* graph */, + { 4565, 5325, 0, 13, 0, UNI_QMARK } /* quotationmark */, + { 17, 8886, 7796, 3, 8, UNI_BASS } /* sc=bassavah */, + { 8, 8598, 0, 6, 0, UNI_patws_values_index } /* patws= */, + { 265, 8679, 0, 5, 0, UNI_ADLM } /* adlam */, + { 6, 1497, 47, 9, 1, UNI_M } /* category=m */, + { 0, 3236, 9433, 18, 4, UNI__PERL_PATWS } /* patternwhitespace=true */, + { 16, 7025, 8993, 3, 4, UNI_IN__10 } /* in=10.0 */, + { 0, 9365, 8568, 4, 6, UNI_LYDI } /* scx=lydian */, + { 0, 8424, 2086, 7, 10, UNI_CYRILLICSUP } /* block=cyrillicsup */, + { 0, 184, 8149, 2, 4, UNI_MULT } /* ismult */, + { 4, 3128, 0, 4, 0, UNI_IDSB } /* idsb */, + { 1, 3671, 6992, 18, 6, UNI_SOGD } /* scriptextensions=sogdian */, + { 36, 6898, 0, 4, 0, UNI_KHAR } /* khar */, + { 0, 9605, 4351, 3, 6, UNI_DT__MED } /* dt=medial */, + { 0, 8424, 2836, 6, 9, UNI_INSUNDANESE } /* block=sundanese */, + { 6039, 9647, 7500, 3, 8, UNI_NV__3_SLASH_16 } /* nv=1.88e-01 */, + { 3205, 4705, 4023, 3, 3, UNI_TALE } /* istale */, + { 1706, 7025, 7604, 3, 3, UNI_IN__4 } /* in=4.0 */, + { 12, 184, 9253, 2, 4, UNI_MIAO } /* ismiao */, + { 0, 3110, 0, 4, 0, UNI_GEOR } /* geor */, + { 0, 9365, 9293, 4, 4, UNI_OGAM } /* scx=ogam */, + { 3, 9849, 6318, 15, 8, UNI__PERL_CHARNAME_CONTINUE } /* _perl_charname_continue */, + { 268, 1362, 8722, 24, 2, UNI_CCC__15 } /* canonicalcombiningclass=15 */, + { 0, 8424, 1668, 6, 23, UNI_SUPPUNCTUATION } /* block=supplementalpunctuation */, + { 10, 949, 0, 27, 0, UNI_ALPHABETICPF } /* alphabeticpresentationforms */, + { 0, 9113, 6207, 4, 12, UNI_CCC__0 } /* ccc=notreordered */, + { 1056, 8592, 26, 6, 1, UNI_NFDQC__Y } /* nfdqc=y */, + { 10, 8886, 3020, 3, 10, UNI_SC__DEVA } /* sc=devanagari */, + { 0, 3980, 0, 7, 0, UNI_LINB } /* linearb */, + { 1, 9629, 1410, 3, 13, UNI_LB__CM } /* lb=combiningmark */, + { 1, 184, 9145, 2, 4, UNI_DSRT } /* isdsrt */, + { 0, 9093, 3535, 4, 17, UNI_CYRILLICEXTC } /* blk=cyrillicextendedc */, + { 0, 4705, 1086, 3, 3, UNI_TANG } /* istang */, + { 119, 5760, 0, 13, 0, UNI_nv_values_index } /* numericvalue= */, + { 0, 3671, 8502, 17, 6, UNI_GOTH } /* scriptextensions=gothic */, + { 3459, 9093, 8205, 4, 7, UNI_INOSMANYA } /* blk=osmanya */, + { 180, 9662, 995, 3, 2, -UNI_SD } /* sd=no */, + { 2, 9049, 5409, 4, 2, UNI_AGE__10 } /* age=10 */, + { 0, 9049, 9441, 4, 3, UNI_IN__1_DOT_1 } /* age=v11 */, + { 1, 1450, 5529, 5, 10, UNI_GREEKEXT } /* ingreekextended */, + { 0, 4580, 2780, 3, 8, UNI_INMONGOLIAN } /* inmongolian */, + { 34, 9093, 1189, 5, 4, UNI_INBATAK } /* blk=batak */, + { 1168, 9365, 9261, 4, 4, UNI_MRO } /* scx=mroo */, + { 0, 9093, 8914, 4, 5, UNI_INNUSHU } /* blk=nushu */, + { 2562, 2684, 6303, 19, 12, UNI_GCB__T } /* hangulsyllabletype=trailingjamo */, + { 0, 6723, 0, 11, 0, UNI_SYLO } /* sylotinagri */, + { 7075, 9093, 6948, 4, 10, UNI_MISCARROWS } /* blk=miscarrows */, + { 0, 9365, 1192, 4, 4, UNI_KANA } /* scx=kana */, + { 5, 3951, 7240, 3, 8, UNI_QAAI } /* isinherited */, + { 0, 2608, 0, 19, 0, UNI_EGYP } /* egyptianhieroglyphs */, + { 258, 3308, 0, 18, 0, UNI_SMALLKANAEXT } /* smallkanaextension */, + { 1, 8424, 2232, 6, 6, UNI_YIJING } /* block=yijing */, + { 6181, 5565, 0, 13, 0, UNI_jg_values_index } /* joininggroup= */, + { 528, 9093, 6183, 4, 12, UNI_INMENDEKIKAKUI } /* blk=mendekikakui */, + { 1291, 3688, 36, 17, 1, UNI_STERM } /* sentenceterminal=t */, + { 1, 8233, 7916, 7, 8, UNI_SC__MAHJ } /* script=mahajani */, + { 5844, 9241, 0, 4, 0, UNI_MEDF } /* medf */, + { 5, 9647, 8969, 3, 4, UNI_NV___MINUS_1_SLASH_2 } /* nv=-1/2 */, + { 2697, 3251, 995, 3, 2, -UNI_CE } /* ce=no */, + { 0, 9113, 8795, 5, 4, UNI_CCC__30 } /* ccc=ccc30 */, + { 3, 8233, 5967, 7, 6, UNI_HEBR } /* script=hebrew */, + { 0, 9093, 1314, 4, 24, UNI_ARABICPFA } /* blk=arabicpresentationformsa */, + { 5, 3671, 9297, 17, 4, UNI_OLCK } /* scriptextensions=olck */, + { 0, 5513, 36, 13, 1, UNI_GRBASE } /* graphemebase=t */, + { 0, 6816, 3773, 3, 10, UNI_BOPOMOFOEXT } /* inbopomofoext */, + { 2379, 6828, 4312, 10, 15, UNI_BC__CS } /* bidiclass=commonseparator */, + { 3202, 9605, 9668, 3, 3, UNI_DT__SQR } /* dt=sqr */, + { 1, 3671, 7341, 17, 4, UNI_PERM } /* scriptextensions=perm */, + { 0, 8884, 7320, 5, 9, UNI_INSC__NONJOINER } /* insc=nonjoiner */, + { 28, 184, 3038, 2, 4, UNI_ETHI } /* isethi */, + { 0, 6679, 995, 11, 2, -UNI_SD } /* softdotted=no */, + { 2089, 9623, 6795, 3, 3, UNI_JG__QAF } /* jg=qaf */, + { 2, 2106, 4195, 21, 9, UNI_WB__EB } /* graphemeclusterbreak=emodifier */, + { 2306, 6918, 9154, 10, 2, UNI_LB__CB } /* linebreak=cb */, + { 1683, 6005, 43, 3, 2, UNI_CJK } /* incjk */, + { 15, 184, 3, 3, 1, UNI_CF } /* iscf */, + { 5203, 8233, 7356, 7, 9, UNI_PALM } /* script=palmyrene */, + { 0, 6005, 8017, 3, 6, UNI_CJKEXTB } /* incjkextb */, + { 2089, 2453, 9434, 21, 3, UNI_TERM } /* terminalpunctuation=true */, + { 0, 5565, 5656, 13, 13, UNI_JG__MANICHAEANNUN } /* joininggroup=manichaeannun */, + { 0, 9620, 1855, 3, 2, UNI_CN } /* gc=cn */, + { 712, 7018, 7462, 10, 1, UNI_IN__4 } /* presentin=4 */, + { 1045, 8233, 2148, 7, 21, UNI_PRTI } /* script=inscriptionalparthian */, + { 3209, 1362, 9077, 24, 4, UNI_WB__EB } /* canonicalcombiningclass=atbl */, + { 0, 2741, 0, 4, 0, UNI_MERO } /* mero */, + { 4, 9608, 1, 3, 1, UNI_EA__N } /* ea=n */, + { 198, 21, 4989, 2, 14, UNI_KANGXI } /* inkangxiradicals */, + { 1, 8233, 9117, 7, 4, UNI_SC__CPRT } /* script=cprt */, + { 0, 8424, 7266, 6, 9, UNI_LATINEXTC } /* block=latinextc */, + { 3, 7203, 0, 9, 0, UNI_BHKS } /* bhaiksuki */, + { 1, 8332, 2514, 3, 18, UNI_ANCIENTGREEKNUMBERS } /* isancientgreeknumbers */, + { 2, 8424, 2086, 7, 20, UNI_CYRILLICSUP } /* block=cyrillicsupplementary */, + { 705, 3251, 26, 3, 1, UNI_CE } /* ce=y */, + { 30, 8935, 1153, 4, 3, UNI_ANY } /* unicode */, + { 0, 5760, 8989, 13, 4, UNI_NV__1_SLASH_80 } /* numericvalue=1/80 */, + { 2053, 184, 478, 2, 31, UNI_MATHALPHANUM } /* ismathematicalalphanumericsymbols */, + { 1046, 186, 0, 2, 0, UNI_CE } /* ce */, + { 3082, 8616, 9734, 6, 3, UNI_STERM } /* sterm=yes */, + { 3, 2393, 0, 20, 0, UNI_HMNP } /* nyiakengpuachuehmong */, + { 20, 7128, 18, 10, 2, UNI_RI } /* wordbreak=ri */, + { 12, 9647, 9500, 3, 3, UNI_NV__1_SLASH_7 } /* nv=1/7 */, + { 3076, 9647, 8382, 3, 6, UNI_NV__600000 } /* nv=600000 */, + { 2200, 9113, 9518, 4, 3, UNI_CCC__BL } /* ccc=218 */, + { 129, 9903, 8839, 6, 5, UNI_XPOSIXCNTRL } /* xposixcntrl */, + { 7824, 9904, 4829, 5, 5, UNI_POSIXDIGIT } /* posixdigit */, + { 8, 1030, 0, 27, 0, UNI_OCR } /* opticalcharacterrecognition */, + { 0, 6898, 0, 10, 0, UNI_KHAR } /* kharoshthi */, + { 3078, 2169, 0, 21, 0, UNI_MEETEIMAYEKEXT } /* meeteimayekextensions */, + { 0, 8886, 689, 3, 9, UNI_XSUX } /* sc=cuneiform */, + { 0, 1911, 2570, 22, 19, UNI_INSC__CONSONANTHEADLETTER } /* indicsyllabiccategory=consonantheadletter */, + { 2474, 21, 3964, 2, 16, UNI_LATIN1 } /* inlatin1supplement */, + { 2, 9909, 7357, 3, 8, UNI_PALM } /* ispalmyrene */, + { 2, 184, 3110, 2, 18, UNI_GEORGIANSUP } /* isgeorgiansupplement */, + { 2069, 9593, 3243, 3, 10, UNI_BC__WS } /* bc=whitespace */, + { 0, 119, 8503, 3, 5, UNI_INGOTHIC } /* ingothic */, + { 586, 9365, 8142, 4, 4, UNI_MARC } /* scx=marc */, + { 0, 1482, 6383, 3, 5, UNI_DOMINO } /* indomino */, + { 5270, 1497, 467, 9, 5, UNI_P } /* category=punct */, + { 520, 2493, 0, 20, 0, UNI_vo_values_index } /* verticalorientation= */, + { 1, 8879, 468, 3, 10, UNI_INPUNCTUATION } /* inpunctuation */, + { 0, 8884, 8646, 5, 6, UNI_INSC__VIRAMA } /* insc=virama */, + { 0, 8884, 4140, 5, 5, UNI_INSC__OTHER } /* insc=other */, + { 0, 3951, 5553, 3, 12, UNI_IPAEXT } /* isipaextensions */, + { 0, 7018, 9680, 10, 3, UNI_IN__3 } /* presentin=v30 */, + { 0, 9125, 36, 4, 1, UNI_CWT } /* cwt=t */, + { 0, 8685, 8864, 4, 5, -UNI_XPOSIXXDIGIT } /* hex=false */, + { 18, 1362, 7539, 24, 3, UNI_CCC__B } /* canonicalcombiningclass=220 */, + { 7433, 9599, 36, 3, 1, UNI_CI } /* ci=t */, + { 0, 9629, 3, 4, 1, UNI_LB__LF } /* lb=lf */, + { 1046, 184, 7275, 2, 9, UNI_LATINEXTD } /* islatinextd */, + { 0, 8424, 0, 6, 34, UNI_UCAS } /* block=unifiedcanadianaboriginalsyllabics */, + { 2390, 9647, 7462, 3, 2, UNI_NV__43 } /* nv=43 */, + { 0, 184, 1889, 2, 22, UNI_EARLYDYNASTICCUNEIFORM } /* isearlydynasticcuneiform */, + { 14, 4826, 1, 9, 1, -UNI_XPOSIXXDIGIT } /* hexdigit=n */, + { 51, 3671, 9185, 17, 4, UNI_HMNG } /* scriptextensions=hmng */, + { 3883, 9928, 3248, 5, 5, UNI_XPOSIXBLANK } /* horizspace */, + { 870, 4580, 6592, 3, 10, UNI_MYANMAREXTB } /* inmyanmarextb */ }; MPH_VALt match_uniprop( const unsigned char * const key, const U16 key_len ) { @@ -6710,53 +7238,56 @@ MPH_VALt match_uniprop( const unsigned char * const key, const U16 key_len ) { } /* Generated from: - * 4d64b650346ff9ddbcd3986f0da13f3be2379d64c574a120ca7f534d8d17934c lib/Unicode/UCD.pm - * ff4404ec64f308bdf7714c50f9fdf0d1d0bf3c34db4d0a67e58ef0c6f88e818f lib/unicore/ArabicShaping.txt - * 292171a0a1c13d7e581e8781eb4cdf248243b1ab267354a63c7a14429dea2740 lib/unicore/BidiBrackets.txt - * 8f2695cc42989a79a715ab0d2892bd0c998759180cfdfb998674447f48231940 lib/unicore/BidiMirroring.txt - * 5ae1649a42ed8ae8cb885af79563f00a9ae17e602405a56ed8aca214da14eea7 lib/unicore/Blocks.txt - * 97b43ed3f4b80572c2114200e5e43a6b923d984c74a6caaf27de5b8462c04cb0 lib/unicore/CaseFolding.txt - * eedcf6932b4081ee65878454588c803af910a5aed7c8c67e3c38701cbee9b9e4 lib/unicore/CompositionExclusions.txt - * 90e48995643f45b08f0ef67fb90de3bb18e26765272bcc0c35c840cbc10b37c1 lib/unicore/DAge.txt - * e6ca152259189ec4bc2297e93c6c88f86e162cc52814198263497f3c9b46cbe9 lib/unicore/DCoreProperties.txt - * 3e255ccdff4b00cfe0be53bbd583e4fe2e7d4039138579543548a5ecfce45242 lib/unicore/DNormalizationProps.txt - * 9f34e2d3ea27ca82f4f14b62411861d1f07c4b9e296d54da112a09cad5b9a48d lib/unicore/EastAsianWidth.txt - * 983810c739b56b9ff0fcb5db018c67d584ee515e8a5f4d9348c79ee85167ec37 lib/unicore/HangulSyllableType.txt - * 7d514a779ee4baf91262bd83c400cb502c3e435dba4b880c876506be32b8e1d0 lib/unicore/IndicPositionalCategory.txt - * f6acead8f84df5c72f3fb70dfc9375279926e4d8ef3480ffff3723095e9804aa lib/unicore/IndicSyllabicCategory.txt - * c8ed526f70443535ca6b705980a08c774017ff17e921202dcb7b71ae554047b6 lib/unicore/Jamo.txt - * 6b204c3727b77699d04a574b22b1e44facab038642095b8565b49762970d9bf8 lib/unicore/LineBreak.txt - * f2357d2bd3526b9e830de72ab038dcfc65a2dff24bcb4c6325c92071eb341f88 lib/unicore/NameAliases.txt - * 6c3e6bd1e58b640076a23b83318a8bf6a691d7fc2b2106114d77c5c5a898bced lib/unicore/NamedSequences.txt - * 58dbf8fedbd5bf67a3bd5c10eda2f2acf2eae59df5f77884a6f158e98f75cf8c lib/unicore/PropList.txt - * a6b0467c3cc7aa4e57d4e5cc7f6e9562b79cf4426dfe438517c28b368ed3e673 lib/unicore/PropValueAliases.txt - * 9ca521224e08d30696516ae6bc3d4434659c45df16047c0d31e440783c163a3b lib/unicore/PropertyAliases.txt - * 3fd0d744a816ddfd06809f92151ae4a73ec970ac2006806c269732d8951f3911 lib/unicore/ScriptExtensions.txt - * d02e24e4c516e9090b6bc9c2d2c8f4c89510b6ed8c5e859d0a861b0dc5cf372d lib/unicore/Scripts.txt - * e9947a0e86f27353f0e776403c4826675001210bd39d7114118a8864a57f7472 lib/unicore/SpecialCasing.txt - * 52423e4d7492167b62f518f68d54db88930abbbff7f11edfcaec8f726498cab1 lib/unicore/UnicodeData.txt - * f28caf260635cebf25fd58124bdc9aa22af08ba4d039ffc584365fb41a31cda5 lib/unicore/VerticalOrientation.txt - * 718d174957712410bfad782b10d557e1047574d7ef1642d6bb122f8ca5662c82 lib/unicore/auxiliary/GCBTest.txt - * 3b66caefc4fa877d0e50dbbbfa39658c86e29b26c6f206f68d7aec192d4c59b6 lib/unicore/auxiliary/GraphemeBreakProperty.txt - * 2aad3836c37fc4c2fa2a24f21586fb3a931dacaf0a1c845a6dc6395f30bd79a7 lib/unicore/auxiliary/LBTest.txt - * eacc03e39dddc60cc59ec9bd274b8ac8dfa25d61745ef0d5c8aa1c151a5b68ba lib/unicore/auxiliary/SBTest.txt - * e45fa8195bb413b901cc1e3772dfea2cead86805d46a51e3480a5a256e8c24d9 lib/unicore/auxiliary/SentenceBreakProperty.txt - * 95789f62e3b1e781dc9ed78f3983d39ff1a5e36ff0b497d6e610446df902b0f6 lib/unicore/auxiliary/WBTest.txt - * c207e8ebd06ee591a27b1087f2971f4cd93e960103c453d85d1d9ba26fb8b202 lib/unicore/auxiliary/WordBreakProperty.txt - * a3c0839826a30166b2bb06ba58df403547b8c3d9eae995ef889d20d115f4b223 lib/unicore/extracted/DBidiClass.txt - * 280afe22f6c4d56566d17d6d1400f33465a979c96f3d99ff3bff9bd14d17e734 lib/unicore/extracted/DBinaryProperties.txt - * db7fd6a5e6f068c47dbc3b74fb633fb1d09d17073410fe435295d05ce925c5f6 lib/unicore/extracted/DCombiningClass.txt - * 8204c07a7c217bdf22525030ad7b4fb991edf463bffcca7e6dba46b9992e0d99 lib/unicore/extracted/DDecompositionType.txt - * e343113719b660bdd81217ec101ce751f844fca0e8d6f15fb21c8ee7dfe7c14c lib/unicore/extracted/DEastAsianWidth.txt - * 07c55b0ed7271fe1a5f4d68059291288b1a8ad61940602d18956fd87390c2d9e lib/unicore/extracted/DGeneralCategory.txt - * d788b9362ec7681e98f8b9d6ef276546e1a6207dda05317ede55bd686b0940a9 lib/unicore/extracted/DJoinGroup.txt - * ebbea3c93eeb7431378885aebac0490d77f6900239c9176f90b6fee030903d96 lib/unicore/extracted/DJoinType.txt - * be0f129691d479aa38646e4ca0ec1ee576ae7f75b0300a5624a7fa862fa8abba lib/unicore/extracted/DLineBreak.txt - * 92449d354d9f6b6f2f97a292ebb59f6344ffdeb83d120d7d23e569c43ba67cd5 lib/unicore/extracted/DNumType.txt - * e3a319527153b0c6c0c549b40fc6f3a01a7a0dcd6620784391db25901df3b154 lib/unicore/extracted/DNumValues.txt - * ba5b13123afb59ea004c14fcbac80b5ff428c5b8f1b84bf8602b4ffb7da0407f lib/unicore/mktables - * 21653d2744fdd071f9ef138c805393901bb9547cf3e777ebf50215a191f986ea lib/unicore/version - * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl - * 33533b773e8eb3486472ad21caf90221710a3e0eb12040cf1fd84c24ba53f2dc regen/mk_invlists.pl - * 784929499a354028e04efcff331847d420beeca7f3f4f22569b59ec160924b72 regen/mph.pl + * d34c77b7e7a94986cc82056919f4ffc1503b73091561e16bd8ef145ac0fd04c5 lib/Unicode/UCD.pm + * 5e91b649379ec79af7cfb6b09410a24557cba4c6d733cd0a2b8a78a1448736d2 lib/unicore/ArabicShaping.txt + * f5feb19cd084b2b1568fbc0f94f4b4b54941406e7fb36c7570f8352fd5022dbe lib/unicore/BidiBrackets.txt + * e6cbd8ffe94f2e0fbfa6695d6c06c1e72eef7d3aa93cb6329d111285198b5e62 lib/unicore/BidiMirroring.txt + * a28b205afe8625fffdb6544a5fe14cf02b91493d9900f07820fa2102a17548f7 lib/unicore/Blocks.txt + * 9c772627c6ee77eea6a17b42927b8ee28ca05dc65d6a511062104baaf3d12294 lib/unicore/CaseFolding.txt + * abc8394c5bde62453118b00c1c5842160a04d7fffb2e829ee5426b846596d081 lib/unicore/CompositionExclusions.txt + * 2fc081011d8fabaf7cf4937732dd5a6d6a57e492c43f3adfeded513387ee0ec3 lib/unicore/DAge.txt + * a6eb7a8671fb532fbd88c37fd7b20b5b2e7dbfc8b121f74c14abe2947db0da68 lib/unicore/DCoreProperties.txt + * 92dcdda84142194a1596f22180fcdf8c0e7f86897f09cc9203c7dc636c549f5f lib/unicore/DNormalizationProps.txt + * 904500178b2e752635bef27aaed3a2a3718a100bce35ff96b3890be7a8315d8f lib/unicore/EastAsianWidth.txt + * 1989b03d93023d8f5cc33eebf0d2ea80c8bd8f8c97843059ea039acb582c2078 lib/unicore/EmojiData.txt + * d7930c2a7318e66b4ba756d5e5b41fbc586c2ad43d450ae9d320a758510bae2e lib/unicore/EquivalentUnifiedIdeograph.txt + * 8606af08712a8c18fe268d418e2e5a87eddee6e190cce4c2d5a76b4fadf035e8 lib/unicore/HangulSyllableType.txt + * 49a1bf18b048454154881f6a8a605b5e2fc73e85fcc4df1cb26d52e8c2aeb9bf lib/unicore/IndicPositionalCategory.txt + * 1b6f3ef6e00e5b2e2a93d2d3c954ca1cce368599c5f11874cd0f0ce222d4637b lib/unicore/IndicSyllabicCategory.txt + * 285c5c1ae458bc3ccd6a1398a94d2d67ce6bc1d7fc0f098762836050345e9434 lib/unicore/Jamo.txt + * 961f842fc70b5afd1d82c6645e68c10d1f701382aed38ae38cb2ff27f671903c lib/unicore/LineBreak.txt + * ff61a0687d2f32c0dd1094254b8bde967883b43c2d4d50fd17531d498e41ab2c lib/unicore/NameAliases.txt + * d3eb9a288ebeaf9de1237989f490705e287b6f610b59d2459fb1b7c2d8e39c39 lib/unicore/NamedSequences.txt + * d30d3ee430cf3527449d024954f053e419fa4aa2246eb59e5cd8d621af0c4b3f lib/unicore/PropList.txt + * efce54f7c715a332c19b3d14c6a0eea30c6cde91caf6ff0d21c755be933736f4 lib/unicore/PropValueAliases.txt + * d3cc3f9f0b6a8f0b7ef1d6ef202675426c28f4a75de01fc69ed977a93a00982b lib/unicore/PropertyAliases.txt + * 3746848c181b5dbc1e614dfac9b8a5e3568e6525c693ac14e692ac55dec57e91 lib/unicore/ScriptExtensions.txt + * e6313a8edfd24f36c7a006fbcf1d1b7245b5dd009c6dde80441f0da08b822c43 lib/unicore/Scripts.txt + * 817ce2e9edca8e075a153f54b8f3b020345e37652cd2bda9b1495c366af17e7e lib/unicore/SpecialCasing.txt + * 93ab1acd8fd9d450463b50ae77eab151a7cda48f98b25b56baed8070f80fc936 lib/unicore/UnicodeData.txt + * ec5ba64af58297a46de17848eb984d2b231adb304de92e9d0d3befdbf9dc2551 lib/unicore/VerticalOrientation.txt + * 95bd55cf803b93eb0b4990cf0e1d70ede263b36412d9c6921fd6f15cef058961 lib/unicore/auxiliary/GCBTest.txt + * 39d73448fd257e6082f83ddf4c8bf6feb191e85dc8fc56b1a8512482de5e3dea lib/unicore/auxiliary/GraphemeBreakProperty.txt + * f385e70f79f5959ae66d64b00f4bda39db6cef78e5363a0cdd88db46eafc6c8f lib/unicore/auxiliary/LBTest.txt + * 7d6c909af97d0ab545a132d412f6e4e65c7eb5158514a7feb9bf00bcd05875f9 lib/unicore/auxiliary/SBTest.txt + * c47d674ef4170c46185bf56f7a4c6627f65f012295e0994f7dc4aea51f8fd8cf lib/unicore/auxiliary/SentenceBreakProperty.txt + * 3e3320bbbe775de7f1a0b9a30021eb949116a9b05cb461c90596c5ecf1743831 lib/unicore/auxiliary/WBTest.txt + * f221f89fe3bb3becc00de726d5694c4b7f464c316baff6d339b2ff3900bcb96c lib/unicore/auxiliary/WordBreakProperty.txt + * db2c41c618bab54b00e58223ad11cec550f9b9fd1a471de236e660da92fe4870 lib/unicore/extracted/DBidiClass.txt + * fecd8a1c49935d794c4c1012f4158aa536a13049a4c10d01aaf7b5f90f3b2cbc lib/unicore/extracted/DBinaryProperties.txt + * db6f38fb4aa8b9181b5e6a9f320de9d5c2c9b5687116a619b3cb90138b025e0b lib/unicore/extracted/DCombiningClass.txt + * 2524f69c175831fd84bfbaf13ea37992f41db167d728c51b1d0002c1d0b130b0 lib/unicore/extracted/DDecompositionType.txt + * 16852301d54ae59b5cfe0daa6b8e17fb688ed055d59b2a5a11eaafc650cc9d30 lib/unicore/extracted/DEastAsianWidth.txt + * 78f898b988049a5bea5039cea6ffe87a92596859ac660a6c438519b512fe2ee6 lib/unicore/extracted/DGeneralCategory.txt + * 33441692403901287c834f96bd33b671133a6f74e2732c61a497608b9e434932 lib/unicore/extracted/DJoinGroup.txt + * a792ac5ef602e3bace679cc96d7491701dcdb73d81c782253de88fdcc5e70e50 lib/unicore/extracted/DJoinType.txt + * 78e2600e24fa7d5ab62117de50b382f8b31b08401c37a0782c38dacb340b64e7 lib/unicore/extracted/DLineBreak.txt + * 1bde4ad73e271c6349fbd1972e54f38bba5cc1900c28f678e79b9e8909b31793 lib/unicore/extracted/DNumType.txt + * 6278722699123f3890e4b1cc42011e96d8960e4958a3b93484361530983d2611 lib/unicore/extracted/DNumValues.txt + * b3d90fc23817ea4e33e9a90107c0a6c7b23314efd5712905ed172624d5524693 lib/unicore/mktables + * a712c758275b460d18fa77a26ed3589689bb3f69dcc1ea99b913e32db92a5cd2 lib/unicore/version + * 2680b9254eb236c5c090f11b149605043e8c8433661b96efc4a42fb4709342a5 regen/charset_translations.pl + * 03e51b0f07beebd5da62ab943899aa4934eee1f792fa27c1fb638c33bf4ac6ea regen/mk_PL_charclass.pl + * 61ea8132bb9ea5c637609e2d026b0b85ce17d6bec544c2f08ce411e6f65e8386 regen/mk_invlists.pl + * c56b78df81e0f96632246052d71580b212546ca02ba4075158965e11d892f21e regen/mph.pl * ex: set ro: */ |